婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > JDBCTM 指南:入門5 - ResultSet

JDBCTM 指南:入門5 - ResultSet

熱門標簽:珠海銷售外呼系統運營商 長春回撥外呼系統廠家 外呼系統啥意思 地圖標注創業項目入駐 廣州三五防封電銷卡 電銷外呼系統 排行榜 四川電信外呼系統靠譜嗎 地圖標注制作道路 山東智能云外呼管理系統
5 - ResultSet
本概述是從《JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference 》這本書中摘引來的。JavaSoft 目前正在準備這本書。這是一本教程,同時也是 JDBC 的重要參考手冊,它將作為 Java 系列的組成部份在 1997 年春季由 Addison-Wesley 出版公司出版。


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

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


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


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


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 維護指向其當前數據行的光標。每調用一次 next 方法,光標向下移動一行。最初它位于第一行之前,因此第一次調用 next 將把光標置于第一行上,使它成為當前行。隨著每次調用 next 導致光標向下移動一行,按照從上至下的次序獲取 ResultSet 行。

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

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

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


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

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

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

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

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

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

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

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


5.1.3 數據類型和轉換
對于 getXXX 方法,JDBC 驅動程序試圖將基本數據轉換成指定 Java 類型,然后返回適合的 Java 值。例如,如果 getXXX 方法為 getString,而基本數據庫中數據類型為 VARCHAR,則 JDBC 驅動程序將把 VARCHAR 轉換成 Java String。getString 的返回值將為 Java String 對象。

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

可使用 ResultSet.getXXX 方法獲取常見的 JDBC 數據類型。

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

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

  T
I

Y
I

T S
M
A
L
L
I

T I

T
E
G
E
R B
I
G

N
T R
E
A
L F
L
O
A
T D
O
U

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

G
V
A
R
C
H
A
R B
I

A
R
Y V
A
R

I

A
R
Y L
O

G
V
A
R

I

A
R
Y D
A
T
E T
I
M
E T
I
M
E

T
A
M

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

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


getBinaryStream 返回只提供數據庫原字節而不進行任何轉換的流。


getAsciiStream 返回提供單字節 ASCII 字符的流。


getUnicodeStream 返回提供雙字節 Unicode 字符的流。


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

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

java.sql.Statement stmt = con.createStatement();
ResultSet r = stmt.executeQuery("SELECT x FROM Table2");
// 現在以 4K 塊大小獲取列 1 結果:
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;
}
// 將新填充的緩沖區發送到 ASCII 輸出流:
output.write(buff, 0, size);
}
}

5.1.5 NULL 結果值
要確定給定結果值是否是 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 可選結果集或多結果集
通常使用 executeQuery(它返回單個 ResultSet)或 executeUpdate(它可用于任何數據庫修改語句,并返回更新行數)可執行 SQL 語句。但有些情況下,應用程序在執行語句之前不知道該語句是否返回結果集。此外,有些已存儲過程可能返回幾個不同的結果集和/或更新計數。

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

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

標簽:廣元 吳忠 玉樹 肇慶 紹興 北海 潮州 保定

巨人網絡通訊聲明:本文標題《JDBCTM 指南:入門5 - ResultSet》,本文關鍵詞  JDBCTM,指南,入門,ResultSet,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《JDBCTM 指南:入門5 - ResultSet》相關的同類信息!
  • 本頁收集關于JDBCTM 指南:入門5 - ResultSet的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    午夜日韩在线电影| 亚洲柠檬福利资源导航| 欧美午夜电影在线播放| 色吧成人激情小说| 欧美日免费三级在线| 91黄色免费网站| 欧美老人xxxx18| 欧美一区二区三区免费视频 | 欧洲日韩一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 色美美综合视频| 9191成人精品久久| 久久奇米777| 1000精品久久久久久久久| 亚洲综合男人的天堂| 日韩1区2区日韩1区2区| 国产一区二区女| eeuss鲁片一区二区三区| 欧美视频一区二| 久久蜜臀中文字幕| 18成人在线观看| 丝袜诱惑制服诱惑色一区在线观看| 久久成人羞羞网站| 91日韩在线专区| 91精品国产一区二区三区蜜臀| 久久综合网色—综合色88| 国产精品三级电影| 青椒成人免费视频| 91亚洲精华国产精华精华液| 欧美肥胖老妇做爰| 国产精品人成在线观看免费| 亚洲成人在线免费| 成人精品高清在线| 91精品欧美久久久久久动漫 | 国产精品一区专区| 欧美午夜精品一区| 日本一二三四高清不卡| 天天综合色天天综合色h| 国产一区二区伦理片| 欧美色视频一区| 国产精品国产三级国产aⅴ原创 | 国产露脸91国语对白| 日本福利一区二区| 久久久久97国产精华液好用吗| 亚洲一本大道在线| 成人性生交大片免费看中文| 欧美一区二区三区日韩视频| 日韩理论片一区二区| 激情成人综合网| 91精品国产综合久久久久久| 亚洲欧美日韩中文字幕一区二区三区| 久久99精品国产| 9191成人精品久久| 亚洲午夜av在线| 91社区在线播放| 欧美国产日韩一二三区| 国产一区二区三区| 久久婷婷一区二区三区| 精品一区二区在线看| 欧美一区日韩一区| 日本中文字幕一区二区有限公司| 色综合久久久久综合| 亚洲欧洲日韩一区二区三区| 风流少妇一区二区| 久久久久国产精品麻豆ai换脸 | 91视频观看免费| 国产精品免费aⅴ片在线观看| 精品制服美女丁香| 精品久久国产老人久久综合| 麻豆一区二区三区| 精品国产1区二区| 国产原创一区二区| 中文字幕欧美区| 国产精品亚洲一区二区三区妖精| 久久久久久日产精品| 成人一区在线看| 综合中文字幕亚洲| 91传媒视频在线播放| 亚洲3atv精品一区二区三区| 欧美美女一区二区在线观看| 视频在线观看国产精品| 日韩欧美一区二区久久婷婷| 精品在线免费观看| 久久一留热品黄| 95精品视频在线| 午夜欧美一区二区三区在线播放| 欧美一区二区三区在线看| 久久99热狠狠色一区二区| 欧美激情在线免费观看| 99国产欧美另类久久久精品| 亚洲电影激情视频网站| 精品欧美久久久| av不卡一区二区三区| 亚洲一区二区高清| 精品播放一区二区| 91丨九色丨黑人外教| 天堂成人国产精品一区| 久久精品一区蜜桃臀影院| av一二三不卡影片| 图片区日韩欧美亚洲| 久久精品这里都是精品| 色久综合一二码| 经典三级一区二区| 亚洲日本乱码在线观看| 日韩一级二级三级| 99国产精品久久久久| 免费在线观看一区| 亚洲精品第1页| 久久久久久日产精品| 日本精品一区二区三区高清| 久久福利资源站| 亚洲蜜臀av乱码久久精品蜜桃| 欧美第一区第二区| 精品视频在线免费| 波多野结衣精品在线| 美女在线视频一区| 亚洲午夜电影在线观看| 国产精品美女久久久久aⅴ| 91精品久久久久久蜜臀| 日本精品一区二区三区高清| 国产69精品久久99不卡| 欧美96一区二区免费视频| 依依成人精品视频| 国产欧美日本一区二区三区| 91精品婷婷国产综合久久竹菊| av成人老司机| 国产a精品视频| 国产毛片精品视频| 久久99精品久久久| 天天色综合成人网| 亚洲一区二区视频在线观看| 中文字幕制服丝袜一区二区三区 | av在线不卡免费看| 久久国产精品第一页| 青青草原综合久久大伊人精品| 亚洲精品国产成人久久av盗摄 | 91在线国内视频| 成人三级在线视频| 国产乱理伦片在线观看夜一区| 久久成人久久爱| 久久99精品一区二区三区三区| 欧美96一区二区免费视频| 视频精品一区二区| 天天综合色天天综合| 日本欧美大码aⅴ在线播放| 日本强好片久久久久久aaa| 奇米影视7777精品一区二区| 日韩专区欧美专区| 青青草97国产精品免费观看| 另类小说图片综合网| 黄网站免费久久| 狠狠色丁香婷综合久久| 国产剧情一区在线| 风间由美一区二区三区在线观看 | 一个色综合av| 亚洲一级在线观看| 日欧美一区二区| 国产一区啦啦啦在线观看| 国产精品91xxx| 99热这里都是精品| 欧美日韩在线播| 精品精品欲导航| 国产丝袜欧美中文另类| 亚洲乱码国产乱码精品精的特点 | 久久综合久色欧美综合狠狠| 久久久不卡影院| 亚洲男人的天堂在线观看| 亚洲国产一区二区视频| 蜜臀久久久99精品久久久久久| 激情五月播播久久久精品| aaa欧美色吧激情视频| 欧美日韩综合色| 国产亚洲午夜高清国产拍精品| 亚洲色图一区二区三区| 日韩电影在线看| 大胆亚洲人体视频| 欧美日韩在线不卡| 亚洲国产精品传媒在线观看| 亚洲高清免费观看高清完整版在线观看| 日日夜夜精品免费视频| 成人精品小蝌蚪| 欧美一区日韩一区| 亚洲视频一区在线| 精品一区二区免费视频| 91成人在线精品| 欧美激情一区二区在线| 日韩中文字幕一区二区三区| 不卡免费追剧大全电视剧网站| 欧美另类一区二区三区| 国产精品国产三级国产aⅴ中文| 美国av一区二区| 欧美日韩在线免费视频| 亚洲人成亚洲人成在线观看图片| 裸体一区二区三区| 欧美日韩综合不卡| 亚洲欧美成人一区二区三区| 福利一区二区在线| 日韩欧美一区中文| 午夜久久久久久久久久一区二区| 成人aa视频在线观看|