<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JDBC學習筆記2

    上一次的筆記中已經初步提到了,JDBC連接數據庫的基本六個步驟。
    下面就簡單的分析一下JDBC的這六個步驟:
    1.獲取連接Connection對象分析
          a.獲取數據庫的三大要素
                |-- URL:不同的數據庫系統(tǒng)的URL不相同,但是至少有如下的內容:
                                主協(xié)議:次協(xié)議: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 調用靜態(tài)SQL
        PreparedStatement 來執(zhí)行動態(tài)SQL,可以為SQL動態(tài)綁定參數。
        如:同構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//執(zhí)行過程,此返回值表示受影響的記錄條數
    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語句
     9    ResultSet rs = stm.getResultSet();
    10  }
    else{
    11    //為假,表示執(zhí)行非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 閱讀(229) 評論(0)  編輯  收藏 所屬分類: JDBC


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


    網站導航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統(tǒng)計

    公告

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

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲欧洲精品一区二区三区| 国产综合成人亚洲区| 拔擦拔擦8x华人免费久久| 特a级免费高清黄色片 | 久久99亚洲网美利坚合众国| 91视频国产免费| 日日躁狠狠躁狠狠爱免费视频| 久久久影院亚洲精品| 国产精品二区三区免费播放心 | 国产成人无码精品久久久免费| 亚洲一区二区影院| yy6080亚洲一级理论| 99视频有精品视频免费观看| 校园亚洲春色另类小说合集 | 国产亚洲情侣久久精品| 亚洲av女电影网| 国产精品深夜福利免费观看 | 在线免费观看h片| 亚洲Av无码国产一区二区| 亚洲av色福利天堂| 免费成人午夜视频| 五月婷婷综合免费| 国产色无码精品视频免费| 亚洲AV女人18毛片水真多| 亚洲电影国产一区| 亚洲成人国产精品| 女人张开腿等男人桶免费视频| 国产午夜无码精品免费看| 色多多免费视频观看区一区| 亚洲va精品中文字幕| 久热综合在线亚洲精品| 亚洲日本在线观看视频| 国产精品黄页在线播放免费| 97国产免费全部免费观看| 免费91麻豆精品国产自产在线观看| 直接进入免费看黄的网站| 亚洲中文字幕一二三四区苍井空| 亚洲男人的天堂在线播放| 精品国产亚洲男女在线线电影 | 老妇激情毛片免费| 中文字幕亚洲精品无码|