Java JDBC連線資料庫(二)

2021-07-30 01:27:23 字數 2377 閱讀 3718

本篇文章接著上篇文章,還剩下乙個知識點是,可滾動的結果接集和可更新的結果集。一般預設情況之下,多結果集是不可以顯式滾動,移動選擇的。如果想要做到,需要指定一些引數,那麼本篇就接著介紹如何操作可滾動的結果集。

預設情況下,結果集是不可以滾動的,如果想要可滾動就需要通過過載的構造方法建立乙個不同的statement物件,如下:

statement statement = dbconn.createstatement(type,concurrency);

//如果是預編譯的statement物件

preparedstatement statement = dbconn.preparestatement(command,type,concurrency);

其中,type的取值範圍如下:

type_forward_only         結果集不能滾動(預設)

type_scroll_insensitive 結果集可以滾動,對原資料庫不敏感

type_scroll_sensitive 結果集可以滾動,對原資料庫敏感

而concurrency的取值範圍如下:

concur_read_only         結果集不能用於更新資料庫

concur_updateable 結果集可以用來更新資料庫

statement statement = dbconn.createstatement(resultset.type_scroll_insensitive,resultset.concur_read_only);

resultset rs = statement.executequery("select * from users");

while(rs.next())

上述**將會列印從一開始列印知道結果集最後一行,我們看到,next方法可以滾動至上一行,previous方法可以滾動到下一行。這種邏輯可能正好和我們的邏輯相反,你可以認為整個結果集是倒置的。absolute(n)方法可以滾動到指定的行號位置,relative()方法可以滾動到相對於當前行號的指定位置。

while(rs.next())
這一段**展示了各行輸出的效果。

說完了結果集的滾動操作,下面介紹結果集的更新操作。那什麼是結果集的可更新操作呢?就是指,從資料庫中查詢出來的結果集,我們通過操作此結果集會對映到資料庫中。下面看看具體**的實現。

statement statement = dbconn.createstatement(resultset.type_scroll_sensitive,resultset.concur_updatable);

resultset rs = statement.executequery("select * from users");

rs.next();

rs.updatestring("pass","1");

rs.updaterow();

statement.close();

dbconn.close();

上述**中主要涉及到了三條語句,createstatement中引數傳遞的更改。第二,rs.updatestring(「pass」,」1」);,我們更改結果集中的資訊都是使用的方法update***,和我們的get***類似。最後一句是非常重要的,之前的所有更改操作都是對於結果集的操作,而最後一句rs.updaterow();則是將結果集的更改內容對映到資料庫中。如果在使用中忘記新增了這局**的呼叫,之前的所有更改將會被丟棄。至於update***中,***的型別,只要sql中有的型別,都會對應乙個呼叫時的型別。nvarchar對應我們的string,int對應int等。

除了修改結果集,我們還可以新增行到結果集中,刪除結果集中當前的行。具體操作如下:

rs.movetoinsertrow();

rs.updateint("id",20);

rs.updatestring("name","walker");

rs.insertrow();

rs.movetocurrentrow();

第一句**movetoinsertrow,將游標移動到了特定的位置,從當前行離開,到結果集的末尾位置,呼叫update方法為每個字段賦值,沒賦值的統統為null,然後呼叫insertrow插入到結果集中並且對映資料庫。最後一條語句movetocurrentrow,返回之前離開的位置。

刪除結果集中的某一行就比較簡潔:

rs.deleterow();
就一條語句表示從結果集中將當前游標執行的行刪除並且同步對映資料庫。

至此,jdbc的簡單用法就介紹完了,如果其中有錯誤,望大家指出!

java JDBC連線資料庫方法

1.裝載驅動器 class.forname 驅動器類名稱 access驅動器類名稱 sun.jdbc.odb.jdbcodbcdriver class.forname sun.jdbc.odb.jdbcodbcdriver 2.建立與資料庫的連線 connection con drivermanag...

Java jdbc連線資料庫插入中文資料亂碼問題

關於亂碼問題無非就是編碼方式不一致導致的。今天在通過jdbc連線資料庫後,本打算在資料庫插入一條中文資料,但是資料表中一直亂碼,像這樣 中文使用?代替。首先通過jdbc連線資料庫後插入資料時,你應該保證以下三處的編碼方式相同 推薦utf 8編碼方式 1 eclipse檔案儲存的編碼方式 2 資料庫的...

8種Java JDBC資料庫連線

關鍵字 1 oracle8 8i 9i資料庫 thin模式 class.forname oracle.jdbc.driver.oracledriver newinstance string url jdbc oracle thin localhost 1521 orcl orcl為資料庫的sid s...