千里馬

          天馬行空

          jdbc 的一些重點(diǎn)

          1,jdbc的作用:與數(shù)據(jù)庫建立連接、執(zhí)行SQL 語句、處理結(jié)果。
          2,DriverManager :依據(jù)數(shù)據(jù)庫的不同,管理JDBC驅(qū)動
             Connection :負(fù)責(zé)連接數(shù)據(jù)庫并擔(dān)任傳送數(shù)據(jù)的任務(wù)  
           Statement :由 Connection 產(chǎn)生、負(fù)責(zé)執(zhí)行SQL語句
            ResultSet:負(fù)責(zé)保存Statement執(zhí)行后所產(chǎn)生的查詢結(jié)果
          3,jdbc URL:提供一種標(biāo)識數(shù)據(jù)庫的方法,使相應(yīng)的JDBC驅(qū)動程序識別數(shù)據(jù)庫并與之建立4,連接:將對JDBC API的調(diào)用,轉(zhuǎn)換為對另一組數(shù)據(jù)庫連接API的調(diào)用
          優(yōu)點(diǎn):可以訪問所有ODBC可以訪問的數(shù)據(jù)庫
          缺點(diǎn):執(zhí)行效率低、功能不夠強(qiáng)大
          5,純Java驅(qū)動
          • 由JDBC驅(qū)動直接訪問數(shù)據(jù)庫
          • 優(yōu)點(diǎn):100% Java,快又可跨平臺
          • 缺點(diǎn):訪問不同的數(shù)據(jù)庫需要下載專用的JDBC驅(qū)動
          6,使用純Java驅(qū)動方式進(jìn)行直連
          1、下載數(shù)據(jù)庫廠商提供的驅(qū)動程序包
          2、將驅(qū)動程序包引入工程中
          3、編寫代碼,通過純Java驅(qū)動方式與數(shù)據(jù)庫建立連接 
          例如:
                 Class.forName(“com.mysql.jdbc.Driver”);
                 Connection con=DriverManger.getconnection(“jdbc:mysq://localhost:3306/tset”,”root”,”mysql”);
          7, 在使用純Java驅(qū)動方式進(jìn)行數(shù)據(jù)庫連接時,如果程序在運(yùn)行時拋出異常:               
           java.sql.SQLException: No suitable driver found for jdbc:sqlserver://localhost:1433;DatabaseName=news   
           那么出錯的原因是什么?如何解決?
            工程中沒有載入驅(qū)動,應(yīng)該把相應(yīng)的.jar文件導(dǎo)入到lib文件夾下。
          8,請單獨(dú)建立一個類ConnectionManager,專門負(fù)責(zé)建立數(shù)據(jù)庫連接、以及關(guān)閉連接,并思考這樣做帶來的好處是什么?
           既便于管理又可以提高代碼的復(fù)用率。
          9,PreparedStatement 接口繼承 Statement接口
          PreparedStatement比普通的Statement對象使用起來更加靈活,更有效率
          Sql語句運(yùn)行多次時盡量使用preparedStatement,以便提高運(yùn)行效率。
          例子:
          public class NewsFirstTitleDB2 {
          public static void main(String[ ] args) {
          Connection con = null;
          PreparedStatement pStatement = null;
          try {
          SimpleDateFormat hmFromat =
                                     new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
          con = ConnectionManager.getConnection();
          String strSql = "insert into FirstLevelTitle values(?,?,?,?)";
          pStatement = con.prepareStatement(strSql);
          pStatement.setInt(1, 1);
          pStatement.setString(2, "軍事");
          pStatement.setString(3, "管理員");
          pStatement.setString(4, hmFromat.format(new Date()));
          pStatement.executeUpdate();
          } catch (SQLException sqlE) {
          sqlE.printStackTrace();
          } finally {
          ConnectionManager.closeStatement(pStatement);
          ConnectionManager.closeConnection(con);
          }
          }
          10,statement主要用于執(zhí)行靜態(tài)的sql語句;
          Preparedstatement執(zhí)行動態(tài)的sql語句
          Resultset 返回查詢的結(jié)果集

          posted on 2012-05-09 12:53 Mr Lee 閱讀(383) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          My Links

          Blog Stats

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          (hibernate)http://www.aygfsteel.com/dyllove98/archive/2012/05/12/377959.html

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 西安市| 广安市| 收藏| 芦溪县| 河曲县| 丹寨县| 桦甸市| 延庆县| 巴马| 新龙县| 盐亭县| 惠安县| 潜山县| 桃园县| 韶关市| 临海市| 五原县| 麻城市| 睢宁县| 兴宁市| 枣阳市| 沙河市| 惠安县| 焦作市| 海原县| 滦平县| 亳州市| 陆川县| 夏河县| 伊宁县| 甘南县| 磐安县| 利津县| 桐柏县| 禹州市| 台安县| 达尔| 江津市| 修水县| 邢台市| 丽江市|