`
xiao_yi
  • 浏览: 405407 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC基础(三)

阅读更多

从结果集中检索值

现在展示在Java编写的程序中如何发送上面的SELECT语句,以及如何取得显示的结果。

 

JDBC将结果集返回给ResultSet对象,因此需要声明一个ResultSet类实例保存结果。下面代码展示了如何声明ResultSet对象rs并将前面的查询结果赋给它:

ResultSet rs = stmt.executeQuery(
    "SELECT COF_NAME, PRICE FROM COFFEES");

使用next方法

变量rs(ResultSet的一个实例)包含了前面例子的结果集中显示的咖啡单价表。为访问名称和单价要移动到每一行,根据它们的类型检索数值。next方法将光标移到下一行,使那行(称为当前行)成为可在其上操作的行。由于光标初始定位于ResultSet对象第一行的上面,所以第一次调用next方法将光标移到第一行,使它成为当前行。接下来调用next方法将使光标从上至下每次移动一行。对于JDBC 2.0 API(下一节讨论),除了向前移动光标外,还可反向移动光标、移动光标至特定位置及移动光标至当前行相对位置。

使用getXXX方法

适当类型的getXXX方法可用于检索列中的数值。例如,rs每行的第一列是COF_NAME,它存储着VARCHAR SQL类型的数值。检索VARCHAR SQL类型数值的方法是getString。每行第二列存储着FLOAT SQL类型的数值,检索该类型数值的方法是getFloat。下面代码访问rs中的当前行,然后输出由名称、3个空格和价格组成的一行字符串。每次调用next方法,下一行就成为当前行,循环一直持续到rs中再也没有可向前移动的行为止。

String query = "SELECT COF_NAME, PRICE FROM COFFEES";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
    String s = rs.getString("COF_NAME");
    float n = rs.getFloat("PRICE");
    System.out.println(s + "   " + n);
}

执行后将输出:

Colombian   7.99
French_Roast   8.99
Espresso   9.99
Colombian_Decaf   8.99
French_Roast_Decaf   9.99

注意,使用弯箭头表示从JDBC代码输出;这不是输出的组成。箭头不用于结果集中的结果,因此箭头可将结果集的内容和应用程序的输出区分开。

通过测试这段代码的两条getXXX语句,您将进一步看到getXXX方法的工作方式。先测试getString吧!

String s = rs.getString("COF_NAME");

由于对ResultSet对象rs调用了getString方法,因此getString将检出(取得)rs当前行COF_NAME列中的值。getString检出的值已从SQL CHAR类型转换成Java中的String并赋给了Sring对象s。注意,在上面的println表达式中使用了变量s,也就是println(s + " " + n) 。

getFloat方法与getString类似,只不过它检索PRICE列(这是SQL FLOAT类型)的值,并在赋给变量n之前转换成Java的Float。

JDBC使用两种方法标识getXXX方法检索数值的列。一种是指定列名,这也是前面例子所做的。另一种是指定列索引(列的序号),1表示第一列,2表示第二列,以此类推。使用列号代替列名,上面的语句将变为:

String s = rs.getString(1);
float n = rs.getFloat(2);

第一行代码提取rs当前行第一列的数值,然后将它转换为Java的String对象并赋给s。第二行代码提取rs当前行第二列的数值,然后将它转换为Java的Float对象并赋给n。注意,这里的列号指的是结果集中的列号,而不是原始表中的列号。

总之,JDBC允许使用列名或列号作为getXXX方法的参数。使用列号会更有效些,在某些场合还必须使用列号。但一般而言,使用列名和使用列号在本质上是等价的。

至于可用哪些getXXX方法检索不同的SQL数据类型,JDBC给了很大的灵活性。例如,getInt方法可用于检索任何numeric或character类型的数值。它检出的数据将转换成int;换言之,如果SQL类型是VARCHAR,JDBC将试着从VARCHAR中解析出一个整数。推荐只用getInt方法检索SQL INTEGER类型的数据;但它不能用于检索BINARY、VARBINARY、LONGVARBINARY、DATE、TIME或TIMESTAMP SQL类型的数据。

表24——检索SQL类型数据的方法展示了哪些方法可合法检索SQL类型的数据,特别是推荐用哪些方法检索各种SQL类型的数据。注意,这张表使用术语“JDBC类型”代替了“SQL类型”。这两个术语都指java.sql.Types中定义的一般SQL类型,它们之间可互换 。

使用getString方法

尽管推荐使用getString方法检索CHAR和VARCHAR SQL类型的数据,但也可能用它检索其他基本SQL类型的数据(但不可用它检索新的SQL3数据类型。本教程后面将讨论SQL3类型)。用getString检索所有数值有很多优点但也有局限。如果用它检索numeric类型的数据,getString将把numeric值转换成Java的String对象,这样一来,在数据要作为数字前就必须转换回numeric类型。在数值一直当成字符串的场合,这是无可非议的。如果想让程序检索除了SQL3类型之外的任何标准SQL类型,就可用getString方法。

使用ResultSet.getXXX方法检索JDBC类型


注意:如果阅读这张表有困难,请看
使用ResultSet.getXXX:Table-Free版,以取得相同信息的不同视图。

 

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
I
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

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

“x”指出可用getXXX方法合法检索指定的JDBC类型。

“X”指出推荐使用getXXX方法检索指定的JDBC类型。

 
评论

相关推荐

    实验3 JDBC操作数据库3

    你需要下载并安装MySQL,通过其自带的管理器或第三方工具(如Navicat、Workbench)来管理数据库。 2. **JDBC(Java Database Connectivity)**:JDBC是Java中用来连接数据库的标准API,它允许Java应用程序与各种...

    jdbc详解(基础版本)

    ### JDBC详解(基础版本) #### 一、JDBC概述 **1.1 什么是JDBC?** JDBC(Java Database Connectivity)是Java平台上的数据库访问技术。简而言之,它是Java语言与各种数据库进行交互的桥梁。通过JDBC,开发者...

    jdbc基础知识总结

    ### JDBC基础知识总结 #### 一、概述 JDBC(Java Database Connectivity)是一种标准的Java API,用于连接并操作各种类型的数据库。它从物理结构上说就是一套Java语言访问数据库的接口集合,本质上则是调用者...

    jdbc jdbc jdbc

    综上所述,JDBC是Java与数据库交互的基础,理解并熟练掌握JDBC原理和实践,对于任何Java开发者来说都是至关重要的,无论是进行简单的数据操作,还是构建复杂的数据库应用。通过深入学习和实践,可以更好地应对各种...

    JDBC基础教程之ResultSet对象.doc )

    ### JDBC基础教程之ResultSet对象详解 #### 一、ResultSet对象概览 `ResultSet`对象是Java Database Connectivity (JDBC) API中的一个核心组件,用于处理SQL查询结果。它充当了一个临时的数据存储,其中包含了所有...

    JAVAJDBC基础.pdf

    【JDBC基础】 JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的标准Java API,它允许Java开发者在程序中执行SQL语句并与各种数据库进行交互。JDBC为Java程序员提供了一种统一的方式来连接和操作...

    JBuider第十三章:JDBC基础知识.rar

    **JBuider第十三章:JDBC基础知识** 在Java编程中,JDBC(Java Database Connectivity)是连接Java应用程序与各种数据库的重要桥梁。本教程聚焦于JDBC的基础知识,旨在帮助初学者理解如何在Java程序中操作数据库。...

    jsp基础JDBC小项目

    二、JDBC基础 1. 驱动加载:JDBC操作的第一步是加载数据库驱动,通过Class.forName()方法指定驱动类名,如"com.mysql.jdbc.Driver"。 2. 数据库连接:使用DriverManager.getConnection()方法建立到数据库的连接,...

    JDBC API教程与参考手册(第三版)前言+目录+第一,二章

    - **第1章:JDBC基础** - JDBC简介 - 安装配置指南 - 第一个JDBC程序 - 连接数据库 - 执行SQL语句 - **第2章:JDBC核心API** - DriverManager类详解 - Connection接口解析 - Statement接口介绍 - ResultSet...

    自学jdbc心得体会

    三、JDBC应用步骤 1. 注册加载一个driver 驱动 2. 创建数据库连接(Connection) 3. 创建一个Statement(发送SQL) 4. 执行SQL语句 5. 处理SQL结果(SELECT语句) 6. 关闭Statement 7. 关闭连接Connection 注意:6...

    JDBC基础教程之概述.txt

    ### JDBC基础教程之概述 #### 一、JDBC简介与概念理解 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC的...

    JSP JDBC 学习笔记(基础)

    ### JDBC基础 1. **JDBC简介**:JDBC是Java API,用于与各种数据库进行连接,执行SQL语句并处理结果。它提供了一套统一的接口,使得开发者无需关心底层数据库的细节。 2. **JDBC驱动**:根据不同的数据库系统,...

    JDBC基础教程之连接.doc

    ### JDBC基础教程之连接知识点详解 #### 一、Connection对象及其作用 - **Connection对象**:在JDBC中,`Connection`对象代表了一个与数据库之间的连接。通过这个连接,应用程序可以执行SQL语句并获取结果集。 - *...

    jdbc驱动,三个jar文件

    它们是所有JDBC操作的基础。 2. **JDBC Driver提供商的JAR文件**:每个数据库供应商都有自己的JDBC驱动实现,这些驱动是特定于数据库的。例如,对于MySQL,我们需要的是`mysql-connector-java.jar`;对于Oracle,...

    JDBC 4.3规范文档

    总之,JDBC规范文档是了解Java数据库编程的基础,无论是数据库开发者、还是应用程序开发者,都需要对其规范有深入的理解。通过遵循JDBC规范,开发者可以编写出能够在多种数据库系统中移植的代码,同时确保代码的可...

    JDBC 入门电子书.zip

    **JDBC 入门知识详解** ...综上所述,JDBC是Java与数据库交互的基础,理解其工作原理和最佳实践对于任何Java开发者来说都至关重要。通过深入学习,我们可以更有效地构建健壮且高效的数据库应用程序。

    jdbc驱动里的三个jar文件包

    1. msbase.jar:这个文件是基础类库,包含了JDBC驱动的基本组件,提供了与数据库进行通信的基础功能。这些功能包括但不限于建立网络连接、处理结果集、执行SQL命令等。通过这个jar包,开发者可以创建和管理到SQL ...

Global site tag (gtag.js) - Google Analytics