<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:不同的數據庫系統的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 閱讀(227) 評論(0)  編輯  收藏 所屬分類: JDBC


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


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

    導航

    統計

    公告

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

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲成A人片在线观看WWW| 亚洲欧洲中文日韩av乱码| 亚洲第一区香蕉_国产a| a级成人毛片免费视频高清| 国产亚洲大尺度无码无码专线| 精品在线视频免费| 亚洲成A人片在线观看无码3D| 香蕉97碰碰视频免费| 亚洲AⅤ永久无码精品AA | 日本一区二区三区日本免费| 亚洲一区二区三区在线观看蜜桃 | 在线观看免费大黄网站| 亚洲国产成人久久一区二区三区| 日韩毛片无码永久免费看| 免费一区二区无码视频在线播放| 亚洲国产人成精品| 毛片基地看看成人免费| 亚洲成av人片天堂网| 91九色老熟女免费资源站| 久久乐国产综合亚洲精品| 国产免费无遮挡精品视频| 一本久久A久久免费精品不卡| 亚洲人色婷婷成人网站在线观看| 亚洲国产精品免费视频| 亚洲国产成人手机在线电影bd| 成人免费一级毛片在线播放视频 | 在线观看特色大片免费视频| 亚洲精品理论电影在线观看| 亚洲美女在线国产| 一区二区三区观看免费中文视频在线播放| 久久久亚洲裙底偷窥综合| 免费网站看v片在线香蕉| 一级特黄色毛片免费看| 亚洲视频一区二区三区| 国产男女猛烈无遮挡免费视频| 一个人看的www在线免费视频| 久久精品国产亚洲av日韩| 日韩免费视频一区| 久热免费在线视频| 看亚洲a级一级毛片| 亚洲精品综合一二三区在线|