国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JDBC2/3.0的特征點滴

2019-11-18 11:27:52
字體:
來源:轉載
供稿:網友

最近寫程序已經很少直接用JDBC了,一直都是用Hibernate來招呼,因為現在的集成框架已經很穩定了。不過對JDBC的直接使用還是不可以忽略的,JDBC3.0提供的n多的新特征還是要熟悉了解的,以前學jdbc的時候就是上網找些demo和介紹來學,使用很單一,對JDBC3.0的好多新的特征都忽略了,比如下面一個例子:

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user WHERE username='aa'");
stmt.executeUpdate("UPDATE user SET lastdatetime=now() where username='aa'");

這是一個用戶登錄時,經常用到的代碼,先是根據用戶名aa查找該用戶的具體信息,然后再更新該用戶的最后登錄時間(lastdatetime)。這這個里面,我們用了兩個sql語句,這個是我一直用的方法,但是假如用JDBC2.0給我們提供的便利,我們只要寫一條sql就夠了,其他的都交給jdbc,看下面的代碼:

Statement stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs2 = stmt.executeQuery("SELECT * FROM user WHERE username='aa'");
rs2.next();
rs2.updateDate("lastdatetime", new Date(Calendar.getInstance().getTimeInMillis()));
rs2.updateRow();

這里面最主要的特征就是ResultSet.TYPE_FORWARD_ONLY和ResultSet.CONCUR_UPDATABLE,通過初始化Statement時傳不同的參數,可以對ResultSet進行不用的錯作限制。con.createStatement的時候,有三種可以掉用的函數:

1、createStatement();
2、createStatement(int resultSetType, int resultSetConcurrency)
3、createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)

其中resultSetType可選值是:
   1、ResultSet.TYPE_FORWARD_ONLY  在ResultSet中只能先前移動游標,
   2、ResultSet.TYPE_SCROLL_INSENSITIVE 在ResultSet中可以隨心所欲的先前向后移動游標,
   3、ResultSet.TYPE_SCROLL_SENSITIVE 在ResultSet中可以隨心所欲的先前向后移動游標,同時ResultSet的值有所改變的時候,他可以得到改變后的最新的值
其中resultSetConcurrency可選值是:
   1、ResultSet.CONCUR_READ_ONLY  在ResultSet中的數據記錄是只讀的,可以修改
   2、ResultSet.CONCUR_UPDATABLE  在ResultSet中的數據記錄可以任意修改,然后更新會數據庫
其中resultSetHoldability可選值是:
   1、ResultSet.HOLD_CURSORS_OVER_COMMIT 表示修改提交時,不關閉ResultSet的游標
   2、ResultSet.CLOSE_CURSORS_AT_COMMIT  表示修改提交時,關閉ResultSet的游標

對于查詢操作第一種初始化方法createStatement(),相當于第二種方法的createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY),第三種方法的createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT)

下面寫一段demo的代碼,我把一些特征函數都用出來,但是只是用來查考和說明名靈活性的。

 Statement stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
 ResultSet rs2 = stmt.executeQuery("SELECT * FROM user");
 rs2.next();
 rs2.updateDate("lastdatetime", new Date(Calendar.getInstance().getTimeInMillis()));
 rs2.updateRow();
 rs2.afterLast();
 while(rs2.PRevious()){ /**....*/ }
 rs.beforeFirst();
 while(rs2.next()){  /**....*/ }
 rs.last();
 rs.first();
 rs.absolute(5); //游標移動到第5條
 rs.absolute(-1);  //游標移動到最后一條
 rs.relative(-5);  //游標向上移動5條
 rs.relative(2);   //游標向下移動2條
 rs.deleteRow(); //刪除當前行
 rs.last();  //游標移動到最后
 rs.updateString("summary", "This is ..."); //設置更新的字段值
 rs.cancelRowUpdates();  //取消剛才輸入的更新
 rs.getRow(); //得到當前行號
 rs.moveToInsertRow();  //游標移動到要新增的那條記錄上
 rs.updateInt("id", 1);
 rs.updateString(2, "my name");
 rs.insertRow(); //插入新記錄



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正阳县| 永州市| 大洼县| 南开区| 安徽省| 吉水县| 金门县| 霍山县| 寻甸| 东兴市| 靖安县| 田东县| 潮州市| 溧阳市| 中阳县| 五河县| 永登县| 寿光市| 明水县| 定安县| 法库县| 定南县| 高碑店市| 北宁市| 栾川县| 常德市| 环江| 南靖县| 宣城市| 郑州市| 隆回县| 通许县| 宽城| 安龙县| 南岸区| 龙门县| 鄂托克旗| 老河口市| 阜平县| 石楼县| 沙湾县|