JDBC學(xué)習(xí)筆記2

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

           1//驅(qū)動(dòng)管理器類(lèi)
           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/*迭代多由的驅(qū)動(dòng),并且一次與給定的URL進(jìn)行匹配,如果成功則返回當(dāng)前驅(qū)動(dòng)的Connection對(duì)象*/
          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/*到此都沒(méi)有返回,說(shuō)明沒(méi)有匹配成功,則拋出SQLException異常*/
          26    throw new SQLException("no suitable driver");
          27  }

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


          My Java study notes.

          posted on 2008-09-27 00:59 mailguest 閱讀(230) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): JDBC


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          ~~~~~~JAVA學(xué)習(xí)筆記~~~~~~

          常用鏈接

          留言簿(1)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 岫岩| 朝阳县| 洞口县| 晋州市| 金阳县| 册亨县| 和顺县| 新蔡县| 安顺市| 宜川县| 云阳县| 辽源市| 松滋市| 武陟县| 平顶山市| 阳谷县| 大竹县| 琼海市| 金堂县| 修水县| 安义县| 孝义市| 台中市| 红河县| 临颍县| 山丹县| 长沙县| 虎林市| 商洛市| 信阳市| 洛浦县| 古田县| 甘孜| 固始县| 师宗县| 乌兰察布市| 抚远县| 抚州市| 驻马店市| 长顺县| 嵩明县|