jdbc編程基礎(六)——可滾動和可更新的結果集

一、可滾動結果集

一般使用ResultSet類中的next方法可以迭代遍歷結果集中的所有行。我們通常會希望在結果集上前後移動。但是jdbc1並未提供previous方法,爲了實現向後遍歷,程序員不得不手動緩存結果集中的數據。使用jdbc2中的可滾動結果集,可以在結果集上前後移動並且可以跳轉到結果集中的任何位置。
1、 可滾動結果集的創建:
Statement stmt = conn.createStatement(type, concurrency);
PreparedStatement pstmt = conn.preparedStatement(type, concurrency);
變量type來設置是否是可滾動的結果集,可以是以下幾個ResultSet常量

TYPE_FORWARD_ONLY :結果集不能滾動

TYPE_SCROLL_INSENSITIVE:結果集可以滾動,但是對數據庫變化不敏感,數據庫查詢
生成結果集後發生了變化,結果集不發生變化。

TYPE_SCROLL_SENSITIVE:結果集可以滾動,但是對數據庫變化敏感。


二、 可更新結果集

更新結果集的內容,數據庫將自動更新。
1、可更新結果集的創建
Statement stmt = conn.createStatement(type, concurrency);
PreparedStatement pstmt = conn.preparedStatement(type,
concurrency);
變量concurrency 設置是否可以更新,ResultSet類的concurrency的值:

CONCUR_READ_ONLY 結果集不能用於更新數據庫

CONCUR_UPDATABLE 結果集可以更新數據庫

update: rs.updateXxx(cloumnNameInResultSet, newValue)
rs.updateRow();
insert: rs.movetoInsertRow();
rs.updateString("title",title);
rs.updateDouble("price", price)l
rs.insertRow();
rs.moveToCurrentRow();
注意,無法控制在結果集或數據庫中添加新數據的位置。
delete: rs.deleteRow();


實際上,數據庫驅動程序可能無法支持對可滾動或可更新的請求,使用DatabaseMetaData類中的supportsResultSetType和supportsResultSetConcurrency方法,我們可以獲知某個數據庫究竟支持哪些結果集類型以及那些模式。一個複雜的查詢的結果集可能是不可更新的結果集。
發佈了31 篇原創文章 · 獲贊 4 · 訪問量 1655
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章