JDBC2 3 0的特徵點滴

2021-08-22 03:48:19 字數 3378 閱讀 6416

最近寫程式已經很少直接用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(); //插入新記錄

jdbc2.0提供的還有乙個功能就是資料庫的批量操作:

con.setautocommit(false);

statement stmt3 = con.createstatement();

stmt3.addbatch("insert .....");

stmt3.addbatch("insert .....");

int rows = stmt3.executebatch();

con.commit();

但是有一點要注意,stmt3.executebatch()他不會自動給你回滾資料操作,當你有5條update語句的時候,如果第三條發生錯誤,那麼將無法自動回滾前兩條update語句的影響,所以一定要自己手工進行事務管理

x230黑蘋果的一點經驗

最近換了個ssd硬碟,再裝了一次黑蘋果 總結點經驗 1.kext載入一次開機不要載入太多會卡死,建議載入一半驅動就重啟下 當然不影響開機的情況下,先別載入顯示卡,和e e吧 2.清空重建快取命令 sudo kextcache system prelinked kernel 可以檢視下是否順利重建快取...

特徵點提取演算法 01 特徵的定義基礎

前言 特徵提取 feature extraction 是計算機視覺和影象處理中的乙個概念。它指的是使用計算機提取影象資訊,決定每個影象的點是否屬於乙個影象特徵。特徵提取的結果是把影象上的點分為不同的子集,這些子集往往屬於孤立的點 連續的曲線或者連續的區域。案 理解特徵提取就是獲取依據需求,來獲取影象...

矩陣的特徵值和特徵向量 知識點

相似矩陣的特徵性質 特徵多項式的展開 幾何重數和代數重數 a aa是數域上的n nn級矩陣,若k nk n kn中有非零向量 alpha 使得a 0 0 k a alpha lambda 0 alpha,lambda 0 in k a 0 0 k則稱 0 lambda 0 0 是a aa的乙個特徵值...