JDBC學習筆記2

          上一次的筆記中已經初步提到了,JDBC連接數據庫的基本六個步驟。
          下面就簡單的分析一下JDBC的這六個步驟:
          1.獲取連接Connection對象分析
                a.獲取數據庫的三大要素
                      |-- URL:不同的數據庫系統的URL不相同,但是至少有如下的內容:
                                      主協議:次協議:HOST(主機):PORT(端口):SID(庫名)
                      |-- USER:用戶名
                      |-- PASSWORD:密碼
                b.DriverManager獲取連接的原理:

           1//驅動管理器類
           2class DriverManager{
           3  static Vector<Driver> drivers = new Vector<Driver>();
           4  public static void registerDriver(Driver d){
           5    driver.add(d);
           6  }

           7/**獲取連接的方法*/
           8  public static Connection getConnection(String url,String user,String pwd) throws SQLException{
           9    Properties info = new Properties();
          10    info.setProperty("user",user);
          11    info.setProperty("password",pwd);
          12    return getConnection(url,info);
          13  }

          14  public static Connection getConnection(String url,Properties info)throws SQLException{
          15/*迭代多由的驅動,并且一次與給定的URL進行匹配,如果成功則返回當前驅動的Connection對象*/
          16    Iterator<Driver> iter = drivers.iterator();
          17    while(iter.hasNext()){
          18      Driver d = iter.next();
          19      if(匹配(url,d)){
          20        return d.connect(url,info);
          21      }
          else{
          22        continue;
          23      }

          24    }

          25/*到此都沒有返回,說明沒有匹配成功,則拋出SQLException異常*/
          26    throw new SQLException("no suitable driver");
          27  }

          28}
          2. Statement 調用靜態SQL
              PreparedStatement 來執行動態SQL,可以為SQL動態綁定參數。
              如:同構SQL,SQL內容一樣參數不同。
           1select id,first_name from s_emp
           2where dept_id = ? and name like ?;
           3
           4insert into t_user values(?,?,?,?);
           5-- 上面的這些情況就可以用setXXX的方法(綁定參數)來傳參數。
           6-- 例:
           7Connection con = ConnectionFactory.getConnection();
           8String sql = "XXXXXXXXXXXXXXXXXXXXXXXXXX";
           9PreparedStatement pstm = con.PreparedStatement(sql);
          10//綁定參數
          11pstm.setInt(1,XXX);
          12pstm.setString(2,XXX);
          13. . . 
          3.CallableStatement用來調用存儲過程[procedure]
          1String sql = "{call insert_user(?,?)}"
          2CallableStatement cstm = con.prepareCall(sql);
          3//綁定參數
          4cstm.setString(1,"user");
          5cstm.setString(2,"password");
          6//執行過程,此返回值表示受影響的記錄條數
          7int res = cstm.executeUpdate();
          8
          4.執行SQL
           1statement:
           2  
           3  executeQuery(selectSQL);   =>  ResultSet
           4  executeUpdate(dmlSQL);     =>  int
           5  execute(arbiSQL);          =>  boolean
           6  
           7  if(stm.execute(sql)){
           8    //為真,表示執行select語句
           9    ResultSet rs = stm.getResultSet();
          10  }
          else{
          11    //為假,表示執行非select語句
          12    int res = stm.getUpdateCount();
          13  }
          5.處理結果集
          1ResultSet rs:
          2    rs.next();   =>  boolean用于判斷結果集中是否還有可讀取的元素。
          3     rs.getXXX();  get系列方法,用于讀去結果集中的元素。
          6.釋放資源
          1Connection.close();
          2Statement.close();
          3ResultSet.close();


          My Java study notes.

          posted on 2008-09-27 00:59 mailguest 閱讀(232) 評論(0)  編輯  收藏 所屬分類: JDBC


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


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          公告

          ~~~~~~JAVA學習筆記~~~~~~

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 金平| 定兴县| 江北区| 土默特左旗| 绿春县| 康马县| 留坝县| 永清县| 汉阴县| 原阳县| 肇源县| 罗田县| 启东市| 织金县| 岫岩| 伊金霍洛旗| 双桥区| 汝州市| 霍山县| 泰安市| 无为县| 东乌珠穆沁旗| 得荣县| 蚌埠市| 阜平县| 广安市| 大埔县| 桦南县| 浪卡子县| 镇坪县| 法库县| 岑溪市| 阜城县| 神农架林区| 花垣县| 乌苏市| 白朗县| 黎平县| 安平县| 怀仁县| 台北市|