亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jdbctm 指南:入門5 - resultset.txt

?? java學習文檔
?? TXT
字號:
作者:jeru
日期:2000-12-9 21:26:52
5 - ResultSet
本概述是從《JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference 》這本書中摘引來的。JavaSoft 目前正在準備這本書。這是一本教程,同時也是 JDBC 的重要參考手冊,它將作為 Java 系列的組成部份在 1997 年春季由 Addison-Wesley 出版公司出版。 


5.1 概述
ResultSet 包含符合 SQL 語句中條件的所有行,并且它通過一套 get 方法(這些 get 方法可以訪問當前行中的不同列)提供了對這些行中數(shù)據(jù)的訪問。ResultSet.next 方法用于移動到 ResultSet 中的下一行,使下一行成為當前行。

結(jié)果集一般是一個表,其中有查詢所返回的列標題及相應的值。例如,如果查詢?yōu)?SELECT a, b, c FROM Table1,則結(jié)果集將具有如下形式: 


a b c
-------- --------- --------
12345 Cupertino CA
83472 Redmond WA
83492 Boston MA


下面的代碼段是執(zhí)行 SQL 語句的示例。該 SQL 語句將返回行集合,其中列 1 為 int,列 2 為 String,而列 3 則為字節(jié)數(shù)組: 


java.sql.Statement stmt = conn.createStatement();
ResultSet r = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (r.next())
{
// 打印當前行的值。
int i = r.getInt("a");
String s = r.getString("b");
float f = r.getFloat("c");
System.out.println("ROW = " + i + " " + s + " " + f);
}

5.1.1 行和光標
ResultSet 維護指向其當前數(shù)據(jù)行的光標。每調(diào)用一次 next 方法,光標向下移動一行。最初它位于第一行之前,因此第一次調(diào)用 next 將把光標置于第一行上,使它成為當前行。隨著每次調(diào)用 next 導致光標向下移動一行,按照從上至下的次序獲取 ResultSet 行。

在 ResultSet 對象或其父輩 Statement 對象關閉之前,光標一直保持有效。

在 SQL 中,結(jié)果表的光標是有名字的。如果數(shù)據(jù)庫允許定位更新或定位刪除,則需要將光標的名字作為參數(shù)提供給更新或刪除命令。可通過調(diào)用方法 getCursorName 獲得光標名。

注意:不是所有的 DBMS 都支持定位更新和刪除。可使用 DatabaseMetaData.supportsPositionedDelete 和 supportsPositionedUpdate 方法來檢查特定連接是否支持這些操作。當支持這些操作時,DBMS/驅(qū)動程序必須確保適當鎖定選定行,以使定位更新不會導致更新異常或其它并發(fā)問題。


5.1.2 列
方法 getXXX 提供了獲取當前行中某列值的途徑。在每一行內(nèi),可按任何次序獲取列值。但為了保證可移植性,應該從左至右獲取列值,并且一次性地讀取列值。

列名或列號可用于標識要從中獲取數(shù)據(jù)的列。例如,如果 ResultSet 對象 rs 的第二列名為“title”,并將值存儲為字符串,則下列任一代碼將獲取存儲在該列中的值: 

String s = rs.getString("title");
String s = rs.getString(2);

注意列是從左至右編號的,并且從列 1 開始。同時,用作 getXXX 方法的輸入的列名不區(qū)分大小寫。

提供使用列名這個選項的目的是為了讓在查詢中指定列名的用戶可使用相同的名字作為 getXXX 方法的參數(shù)。另一方面,如果 select 語句未指定列名(例如在“select * from table1”中或列是導出的時),則應該使用列號。這些情況下,用戶將無法確切知道列名。

有些情況下,SQL 查詢返回的結(jié)果集中可能有多個列具有相同的名字。如果列名用作 getXXX 方法的參數(shù),則 getXXX 將返回第一個匹配列名的值。因而,如果多個列具有相同的名字,則需要使用列索引來確保檢索了正確的列值。這時,使用列號效率要稍微高一些。

關于 ResultSet 中列的信息,可通過調(diào)用方法 ResultSet.getMetaData 得到。返回的 ResultSetMetaData 對象將給出其 ResultSet 對象各列的編號、類型和屬性。

如果列名已知,但不知其索引,則可用方法 findColumn 得到其列號。


5.1.3 數(shù)據(jù)類型和轉(zhuǎn)換
對于 getXXX 方法,JDBC 驅(qū)動程序試圖將基本數(shù)據(jù)轉(zhuǎn)換成指定 Java 類型,然后返回適合的 Java 值。例如,如果 getXXX 方法為 getString,而基本數(shù)據(jù)庫中數(shù)據(jù)類型為 VARCHAR,則 JDBC 驅(qū)動程序?qū)?VARCHAR 轉(zhuǎn)換成 Java String。getString 的返回值將為 Java String 對象。

下表顯示了允許用 getXXX 獲取的 JDBC 類型及推薦用它獲取的 JDBC 類型(通用 SQL 類型)。小寫的 x 表示允許 getXXX 方法獲取該數(shù)據(jù)類型;大寫的 X 表示對該數(shù)據(jù)類型推薦使用 getXXX 方法。例如,除了 getBytes 和 getBinaryStream 之外的任何 getXXX 方法都可用來獲取 LONGVARCHAR 值,但是推薦根據(jù)返回的數(shù)據(jù)類型使用 getAsciiStream 或 getUnicodeStream 方法。方法 getObject 將任何數(shù)據(jù)類型返回為 Java Object。當基本數(shù)據(jù)類型是特定于數(shù)據(jù)庫的抽象類型或當通用應用程序需要接受任何數(shù)據(jù)類型時,它是非常有用的。

可使用 ResultSet.getXXX 方法獲取常見的 JDBC 數(shù)據(jù)類型。

“x”表示該 getXXX 方法可合法地用于獲取給定 JDBC 類型。

“X”表示推薦使用該 getXXX 方法來獲取給定 JDBC 類型。

  T
I
N
Y
I
N
T S
M
A
L
L
I
N
T I
N
T
E
G
E
R B
I
G

N
T R
E
A
L F
L
O
A
T D
O
U
B
L
E D
E
C
I
M
A
L N
U
M
E
R
I
C B
I
T C
H
A
R V
A
R
C
H
A
R
L
O
N
G
V
A
R
C
H
A
R B
I
N
A
R
Y V
A
R
B
I
N
A
R
Y L
O
N
G
V
A
R
B
I
N
A
R
Y D
A
T
E T
I
M
E T
I
M
E
S
T
A
M
P 
getByte X x x x x x x x x x x x x             
getShort x X x x x x x x x x x x x             
getInt x x X x x x x x x x x x x             
getLong x x x X x x x x x x x x x             
getFloat x x x x X x x x x x x x x             
getDouble x x x x x X X x x x x x x             
getBigDecimal x x x x x x x X X x x x x             
getBoolean x x x x x x x x x X x x x             
getString x x x x x x x x x x X X x x x x x x x 
getBytes                           X X x       
getDate                     x x x       X   x 
getTime                     x x x         X x 
getTimestamp                     x x x       x   X 
getAsciiStream                     x x X x x x       
getUnicodeStream                     x x X x x x       
getBinaryStream                           x x X       
getObject x x x x x x x x x x x x x x x x x x x 



5.1.4 對非常大的行值使用流
ResultSet 可以獲取任意大的 LONGVARBINARY 或 LONGVARCHAR 數(shù)據(jù)。方法 getBytes 和 getString 將數(shù)據(jù)返回為大的塊(最大為 Statement.getMaxFieldSize 的返回值)。但是,以較小的固定塊獲取非常大的數(shù)據(jù)可能會更方便,而這可通過讓 ResultSet 類返回 java.io.Input 流來完成。從該流中可分塊讀取數(shù)據(jù)。注意:必須立即訪問這些流,因為在下一次對 ResultSet 調(diào)用 getXXX 時它們將自動關閉(這是由于基本實現(xiàn)對大塊數(shù)據(jù)訪問有限制)。 

JDBC API 具有三個獲取流的方法,分別具有不同的返回值: 


getBinaryStream 返回只提供數(shù)據(jù)庫原字節(jié)而不進行任何轉(zhuǎn)換的流。


getAsciiStream 返回提供單字節(jié) ASCII 字符的流。


getUnicodeStream 返回提供雙字節(jié) Unicode 字符的流。


注意:它不同于 Java 流,后者返回無類型字節(jié)并可(例如)通用于 ASCII 和 Unicode 字符。

下列代碼演示了 getAsciiStream 的用法: 

java.sql.Statement stmt = con.createStatement();
ResultSet r = stmt.executeQuery("SELECT x FROM Table2");
// 現(xiàn)在以 4K 塊大小獲取列 1 結(jié)果:
byte buff = new byte[4096];
while (r.next()) {
Java.io.InputStream fin = r.getAsciiStream(1);
for (;;) {
int size = fin.read(buff);
if (size == -1) { // 到達流末尾
break;
}
// 將新填充的緩沖區(qū)發(fā)送到 ASCII 輸出流:
output.write(buff, 0, size);
}
}

5.1.5 NULL 結(jié)果值
要確定給定結(jié)果值是否是 JDBC NULL,必須先讀取該列,然后使用 ResultSet.wasNull 方法檢查該次讀取是否返回 JDBC NULL。

當使用 ResultSet.getXXX 方法讀取 JDBC NULL 時,方法 wasNull 將返回下列值之一: 


Java null 值:對于返回 Java 對象的 getXXX 方法(例如 getString、getBigDecimal、getBytes、getDate、getTime、getTimestamp、getAsciiStream、getUnicodeStream、getBinaryStream、getObject 等)。


零值:對于 getByte、getShort、getInt、getLong、getFloat 和 getDouble。


false 值:對于 getBoolean。


5.1.6 可選結(jié)果集或多結(jié)果集
通常使用 executeQuery(它返回單個 ResultSet)或 executeUpdate(它可用于任何數(shù)據(jù)庫修改語句,并返回更新行數(shù))可執(zhí)行 SQL 語句。但有些情況下,應用程序在執(zhí)行語句之前不知道該語句是否返回結(jié)果集。此外,有些已存儲過程可能返回幾個不同的結(jié)果集和/或更新計數(shù)。

為了適應這些情況,JDBC 提供了一種機制,允許應用程序執(zhí)行語句,然后處理由結(jié)果集和更新計數(shù)組成的任意集合。這種機制的原理是首先調(diào)用一個完全通用的 execute 方法,然后調(diào)用另外三個方法,getResultSet、getUpdateCount 和 getMoreResults。這些方法允許應用程序一次一個地研究語句結(jié)果,并確定給定結(jié)果是 ResultSet 還是更新計數(shù)。

用戶不必關閉 ResultSet;當產(chǎn)生它的 Statement 關閉、重新執(zhí)行或用于從多結(jié)果序列中獲取下一個結(jié)果時,該 ResultSet 將被 Statement 自動關閉。



 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日噜噜夜夜狠狠视频欧美人| 欧美男男青年gay1069videost| 在线视频欧美精品| 久久综合五月天婷婷伊人| 一区二区三区免费看视频| 国产精品18久久久久久久网站| 欧美日本国产视频| 国产精品初高中害羞小美女文| 男男成人高潮片免费网站| 91网站黄www| 2020国产精品| 捆绑变态av一区二区三区| 欧美性猛交xxxxxx富婆| 亚洲视频免费观看| 成人综合婷婷国产精品久久蜜臀 | 性欧美疯狂xxxxbbbb| 成人a免费在线看| 国产日产欧美一区二区视频| 久久成人免费网| 91精品国产综合久久久久久久久久| 国产精品久久久久久久久动漫| 国产综合色精品一区二区三区| 欧美日韩一级二级三级| 一区二区三区四区激情| 色综合一区二区三区| 中文字幕一区二区视频| 韩国欧美国产1区| 91精品国产色综合久久不卡电影 | 色国产精品一区在线观看| 国产精品日韩成人| 成人夜色视频网站在线观看| 欧美激情综合在线| 成人永久免费视频| 国产精品免费视频观看| 不卡的av在线| 亚洲精品成人悠悠色影视| 91蜜桃免费观看视频| 亚洲女同女同女同女同女同69| 99久久精品国产麻豆演员表| 亚洲美女少妇撒尿| 欧美日韩不卡一区二区| 日本亚洲视频在线| 欧美变态tickle挠乳网站| 狠狠狠色丁香婷婷综合久久五月| 久久久精品中文字幕麻豆发布| 国产一区二区三区不卡在线观看 | 国产精品综合久久| 国产欧美日韩亚州综合| 99久久精品免费看国产免费软件| 亚洲另类在线视频| 7777精品伊人久久久大香线蕉 | 成人高清视频在线| 亚洲欧美色图小说| 欧美日韩不卡视频| 久久国产欧美日韩精品| 欧美国产精品一区二区三区| 色综合色综合色综合| 婷婷中文字幕综合| 久久色在线视频| 色狠狠色狠狠综合| 奇米影视在线99精品| 国产精品免费人成网站| 欧美专区日韩专区| 国产精品99久久不卡二区| 亚洲美女视频在线观看| 精品国产91乱码一区二区三区 | 国产精品福利电影一区二区三区四区| 色综合久久中文综合久久牛| 奇米色一区二区三区四区| 国产精品美女久久福利网站| 欧美日韩国产美女| 粉嫩绯色av一区二区在线观看| 亚洲最大的成人av| 久久久久久久网| 欧美人与性动xxxx| 91免费在线看| 黄一区二区三区| 亚洲影院久久精品| 国产日产欧美一区| 日韩精品一区二区在线观看| 91精品福利视频| 国产乱理伦片在线观看夜一区| 亚洲午夜在线电影| 国产精品无人区| 精品国产免费久久| 欧美日韩免费视频| 91香蕉国产在线观看软件| 视频一区二区欧美| 国产精品久久久一本精品| 日韩一区二区三区av| 欧美熟乱第一页| 99久久99久久精品免费观看| 国产精品18久久久久久久网站| 日韩高清一区在线| 午夜欧美2019年伦理| 亚洲欧美日韩系列| 中文字幕色av一区二区三区| 久久久久久99久久久精品网站| 56国语精品自产拍在线观看| 91成人国产精品| 99久久综合色| 丁香六月综合激情| 国产精品99久久久久久似苏梦涵| 蜜臀久久99精品久久久久宅男 | 国产又黄又大久久| 奇米色777欧美一区二区| 午夜激情一区二区三区| 亚洲国产成人精品视频| 洋洋成人永久网站入口| 樱花草国产18久久久久| 亚洲精品日产精品乱码不卡| 亚洲精品午夜久久久| 亚洲免费大片在线观看| 1000部国产精品成人观看| 日韩一区中文字幕| 亚洲蜜臀av乱码久久精品| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 亚洲国产成人91porn| 一区二区三区四区国产精品| 亚洲制服丝袜av| 亚洲成在人线在线播放| 日韩成人dvd| 国精产品一区一区三区mba视频 | 91精彩视频在线观看| 欧洲国产伦久久久久久久| 欧美在线一二三四区| 4438x成人网最大色成网站| 日韩一区二区在线观看| 久久亚洲一级片| 国产精品萝li| 亚洲一二三四在线观看| 日韩激情视频在线观看| 国产一区高清在线| 99这里只有久久精品视频| 91黄色免费观看| 欧美军同video69gay| 精品国产乱码久久久久久图片| 国产欧美日韩另类一区| 亚洲永久精品国产| 精品无码三级在线观看视频| 国产精品影视天天线| jizzjizzjizz欧美| 欧美电影一区二区三区| 国产午夜精品一区二区三区嫩草| 亚洲三级电影全部在线观看高清| 亚洲 欧美综合在线网络| 国内一区二区视频| 一本大道久久a久久综合婷婷| 91精品午夜视频| **欧美大码日韩| 久久99久久久久久久久久久| 性感美女久久精品| 久久成人免费电影| 国产一区不卡视频| 91香蕉国产在线观看软件| 欧美一区二区二区| 亚洲人精品一区| 激情亚洲综合在线| 欧美探花视频资源| 伊人婷婷欧美激情| 激情综合五月天| 欧美性大战久久久久久久| 国产三级三级三级精品8ⅰ区| 亚洲午夜精品网| www..com久久爱| 日韩欧美中文一区二区| 亚洲午夜久久久久| 成人91在线观看| 精品国产一区二区三区av性色| 亚洲一区日韩精品中文字幕| 国产乱码精品一区二区三区av | 国产精品亚洲人在线观看| 欧美日韩在线播放三区四区| 欧美国产激情一区二区三区蜜月| 亚洲成va人在线观看| 99久久伊人久久99| 国产日韩av一区二区| 老司机精品视频在线| 久久综合狠狠综合久久激情| 午夜精品视频一区| 91九色02白丝porn| 国产精品天天摸av网| 国产精品综合一区二区| 欧美一级午夜免费电影| 亚洲国产视频一区二区| 91色九色蝌蚪| 亚洲欧美日韩在线| 色综合色综合色综合色综合色综合| 久久精品一区二区三区四区| 青青草精品视频| 在线播放中文一区| 偷窥少妇高潮呻吟av久久免费 | 99免费精品视频| 国产精品久久三区| 丁香一区二区三区| 国产日韩欧美精品电影三级在线| 国产麻豆精品久久一二三| 日韩精品在线一区二区| 久久99久久99小草精品免视看| 欧美www视频|