jdbc复习

来源:互联网 发布:太平洋电脑网 软件 编辑:程序博客网 时间:2024/05/18 01:16

JDBC简介
JDBC是一种可用于执行SQL语句的JavaAPI(Application Programming Interface,应用程序设计接口)。它由一些Java语言编写的类和界面组成。JDBC为数据库应用开发人员和数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。

通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问Oracle,写另一个程序访问MySQL,再写一个程序访问SQL Server。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。不但如此,使用Java编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上编写不同的应用。Java和JDBC的结合可以让开发人员在开发数据库应用时真正实现“一次编写,处处运行”。

Java具有健壮、安全、易用等特性,而且支持自动网上下载,本质上是一种很好的数据库应用的编程语言。它所需要的是Java应用如何同各种各样的数据库连接,JDBC正是实现这种连接的关键。  

16.3.1   JDBC的类和接口
在Java语言中提供了丰富的类和接口用于数据库编程,利用它们可以方便地进行数据的访问和处理。下面主要介绍Java.sql包中提供的常用类和接口。

Java.sql包中提供了JDBC中核心的类和接口,其常用类、接口和异常如表17-1所示。

表17-1                                           Java.sql包中的常用类、接口和异常

类型
类、接口或者异常
说     明


Date
接收数据库的Date对象

DriverManager
注册、连接以及注销等管理数据库驱动程序任务

DriverPropertyInfo
管理数据库驱动程序的属性

Time
接收数据库的Time对象

Types
提供预定义的整数列表与各种数据类型的一一对应

续表

类型
类、接口或者异常
说     明

接口
Array
Java语言与SQL语言中的ARRAY类型的映射

Blob
Java语言与SQL语言中的BLOB类型的映射

CallableStatemet
执行SQL存储过程

Clob
Java语言与SQL语言中的CLOB类型的映射

Connection
应用程序与特定数据库的连接

DatabaseMetaData
数据库的有关信息

Driver
驱动程序必须实现的接口

ParameterMetaData
PreparedStatement对象中变量的类型和属性

PreparedStatement
代表预编译的SQL语句

Ref
Java语言与SQL语言中的REF类型的映射

ResultSet
接收SQL语句并返回结果

ResultSetMetaData
查询数据库返回的结果集的有关信息

SQLData
Java语言与SAL语言中用户自定义类型的映射

Statement
执行SQL语句并返回结果

Struct
Java语言与SQL语言中的structured类型的映射

异常
BatchUpdatedExceptions
批处理的作业中至少有一条指令失败

DataTruncation
数据被意外截断

SQLException
数据存取中的错误信息

SQLWarning
数据存取中的警告

接下来具体介绍一下JDBC编程中常用的DriverManager类、Connection接口、Statement接口和ResultSet接口。

1.DriverManager类
用来管理数据库中的所有驱动程序。它可以跟踪可用的驱动程序,注册、注销以及为数据库连接合适的驱动程序,设置登录时间限制,等等。

DriverManager类中常用方法如表17-2所示。

表17-2                                                 DriverManager类中常用方法

方     法
说     明

static void deregisterDriver(Driver driver)
注销指定的驱动程序

static Connection getConnection(String url)
连接指定的数据库

static Connection getConnection(String url, String user, String password)
以指定的用户名和密码连接指定数据库

static Driver getDriver(String url)
获取建立指定连接需要的驱动程序

static Enumeration getDrivers()
获取已装载的所有JDBC驱动程序

static int getLoginTimeout()
获取驱动程序等待的秒数

static void println(String message)
注册指定驱动程序

static void setLoginTimeout(int seconds)
设置驱动程序等待连接的最大时间限制

2.Connection接口
Connection接口用于应用程序和数据库的相连。Connection接口中提供了丰富的方法用于建立Statement对象、设置数据处理的各种参数等。

Connection接口中的常用方法如表17-3所示。

表17-3                                                  Connection接口中常用方法

方     法
说     明

void close()
关闭当前连接并释放资源

void commit()
提交对数据库所做的改动,释放当前连接特有的数据库的锁

Statement createStatement()
创建Statement对象

Statement createStatement(int resultSetType, int resultSetConcurrency)
创建一个要生成特定类型和并发性结果集的Statement对象

String getCatalog()
获取Connection对象的当前目录

boolean isClosed()
判断连接是否关闭

boolean isReadOnly()
判断连接是否处于只读状态

CallableStatement prepareCall(String sql)
创建CallableStatement对象

PreparedStatement prepareStatement(String sql)
创建PreparedStatemen对象

void rollback()
回滚当前事务中的所有改动,释放当前连接特有的数据库的锁

void setReadOnly(boolean readOnly)
设置连接为只读模式

3.Statement接口
Statement接口用于在已经建立连接的基础上向数据库发送SQL语句。Statement接口中包含了执行SQL语句和获取返回结果的方法。

在JDBC中有3种Statement对象:Statement、PreparedStatement和CallableStatement。Statement对象用于执行不带参数的简单SQL语句;PreparedStatement继承了Statement,用于处理需要被多次执行的SQL语句;CallableStatement继承了PreparedStatement,用于执行对数据库的存储过程的调用。

Statement接口的常用方法如表17-4所示。

表17-4                                                   Statement接口中常用方法

方     法
说     明

void addBatch(String sql)
在Statement语句中增加SQL批处理语句

void cancel()
取消SQL语句指定的数据库操作指令

void clearBatch()
清除Statement语句中的SQL批处理语句

void close()
关闭Statement语句指定的数据库连接

boolean execute(String sql)
执行SQL语句(用于执行返回多个结果集或者多个更新数的语句)

int[] executeBatch()
批处理执行多个SQL语句

ResultSet executeQuery(String sql)
执行SQL查询语句,并返回结果集(用于执行返回单个结果集的SQL语句)

续表

方     法
说     明

int executeUpdate(String sql)
执行数据库更新,返回值说明执行该语句所影响数据表中的行数

Connection getConnection()
获取对数据库的连接

int getFetchSize()
获取结果集的行数

int getMaxFieldSize()
获取结果集的最大字段数

int getMaxRows()
获取结果集的最大行数

int getQueryTimeout()
获取查询超时时间设置

ResultSet getResultSet()
获取结果集

void setCursorName(String name)
设置数据库游标的名称

void setFetchSize(int rows)
设置结果集的行数

void setMaxFieldSize(int max)
设置结果集的最大字段数

void setMaxRows(int max)
设置结果集的最大行数

void setQueryTimeout(int seconds)
设置查询超时时间

4.ResultSet接口
ResultSet接口用来暂时存放数据库查询操作所获得的结果。ResultSet接口中包含了一系列get方法,用来对结果集中的数据进行访问。

ResultSet接口中定义的常用方法如表17-5所示。

表17-5                                                    ResultSet接口中常用方法

方     法
说     明

boolean absolute(int row)
将游标移动到结果集的某一行

void afterLast()
将游标移动到结果集的末尾

void beforeFirst()
将游标移动到结果集的头部

void deleteRow()
删除结果集中的当前行

boolean first()
将游标移动到结果集的第一行

Date getDate(int conlumnIndex)
获取当前行某一列的值,返回值的类型为Date

Statement getStatement()
获取产生该结果集的Statement对象

int getType()
获取结果集的类型

boolean inAfterLast()
判断游标是否指向结果集的末尾

boolean isBeforeFirst()
判断游标是否指向结果集的头部

boolean isFirst()
判断游标是否指向结果集的第一行

boolean isLast()
判断游标是否指向结果集的最后一行

boolean last()
将游标移动到结果集的最后一行

boolean next()
将游标移动到结果集的后面一行

boolean previous()
将游标移动到结果集的前面一行

16.3.2   用JDBC访问数据库的一般步骤
(1)调用Class.forName()方法加载驱动程序。

(2)调用DriverManager对象的getConnection()方法,获得一个Connection对象。

(3)创建一个Statement对象,准备一个SQL语句,这个SQL语句可以是Statement对象(立即执行的语句)、PreparedStatement语句(预编译的语句)或CallableStatement对象(存储过程调用的语句)。

(4)调用executeQuery()等方法执行SQL语句,并将结果保存在ResultSet对象;或者调用executeUpdate()等方法执行SQL语句,不返回ResultSet对象的结果。

(5)对返回的ResultSet对象进行显示等相应的处理。

具体应用如代码16-5所示。

【代码16-5】   JDBC访问数据库的一般步骤

String dbDriver = "sun.jdbc.odbc.JdbcOdbcDriver";//声明数据库驱动

String url = "jdbc:odbc:数据源名称";//声明数据源

Connection conn = null;//声明与数据库的连接

Statement stmt = null;//声明执行SQL语句

ResultSet rs = null;//声明结果集

...

Class.forName(dbDriver);//加载数据库驱动

conn = DriverManager.getConnection(url);//连接数据库

stmt = conn.createStatement();//创建Statement对象

rs = stmt.executeQuery("SELECT * FROM databasename");//执行查询语句

while(rs.next())

{

...

}

//关闭连接

rs.close();

stmt.close();

conn.close();

...

原创粉丝点击