当前位置:文档之家› CRJ-2_1B

CRJ-2_1B

使用JDBC 高级功能创建应用程序

课前评估

1.______________ 层表示通过JDBC API 与JDBC驱动程序交互的Java 应用程序。

a.JDBC 应用程序层

b.JDBC 驱动程序层

c.JDBC 驱动管理器层

d.JDBC API 层

2.JDBC __________是Java 应用程序用于访问数据库的软件。

a.驱动管理器

b.驱动程序

c.DSN

d.CLI

使用JDBC 高级功能创建应用程序

课前评估(续)

3.哪个JDBC 驱动程序扮演着JDBC 应用程序和ODBC 驱动程序之间接口的角色?

a.Native-API 部分Java 驱动程序

b.Native Protocol 纯Java 驱动程序

c.JDBC-ODBC 桥接驱动程序

d.JDBC-Net 纯Java 驱动程序

4.哪个JDBC 驱动程序将JDBC 调用映射为本机方法调用?哪些被传递到本地本机调用级

接口(CLI)??

a.Native-API 部分Java 驱动程序

b.JDBC-ODBC 桥接驱动程序

c.Native Protocol 纯Java 驱动程序

d.JDBC-Net 纯Java 驱动程序

使用JDBC 高级功能创建应用程序课前评估(续)

5.哪个接口可以建立Java 应用程序和数据库间的连接?

a.Statement接口

b.ResultSet接口

c.DriverManager接口

d.Connection接口

使用JDBC 高级功能创建应用程序课前评估答案

1. a. Java 应用程序层

2. b. 驱动程序

3. c. JDBC-ODBC 桥接驱动程序

4. a. Native-API 部分Java 驱动程序

5. d. Connection接口

使用JDBC 高级功能创建应用程序目标

在本节中,你将学习到:

?使用PreparedStatement对象创建应用程序

?管理数据库事务

?执行批处理更新

?在JDBC 中创建并调用存储过程

?在JDBC 中使用元数据

使用JDBC 高级功能创建应用程序

使用PreparedStatement 对象查询和修改数据

?PreparedStatement接口派生自Statement接口,位于java.sql包中。

?PreparedStatement 对象:

?可以传递运行时参数到SQL 语句以查询和修改表中数据。

?只需被JDBC 编译准备一次,以后调用PreparedStatement对象无需重新编译SQL 语句。

?帮助减少数据库服务器负荷,从而提高应用程序的性能。

使用JDBC 高级功能创建应用程序

使用PreparedStatement 对象查询和修改数据(续)

?PreparedStatement 接口的方法

?PreparedStatement接口继承以下方法来执行Statement接口中的SQL 语句:?ResultSet executeQuery(): 执行SELECT语句并返回ResultSet对象的结果。

?int executeUpdate(): 执行SQL 语句INSERT, UPDATE或DELETE并返回受影响的行数。

?boolean execute(): 执行SQL 语句并返回一个boolean值。

使用JDBC 高级功能创建应用程序

使用PreparedStatement 对象查询和修改数据(续)

?Connection对象的prepareStatement()方法用于向数据库提交参数化查询。

?SQL 语句可以包含‘?’这一占位符,在运行时可替换为输入参数。例如:

stat=con.prepareStatement("SELECT * FROM authors WHERE au_id

= ?");

?每个‘?’参数的值是通过调用相应的setXXX()方法设置的,其中XXX 是参数的数据类型。例如:

stat.setString(1,"1001");

ResultSet result=stat.executeQuery();

使用JDBC 高级功能创建应用程序

使用PreparedStatement 对象查询和修改数据(续)

?检索数据行

?以下是使用PreparedStatement 对象从titles表中检索某位作者所写的书的代码片断:

String str = "SELECT * FROM titles WHERE au_id = ?";

PreparedStatement ps= con.prepareStatement(str);

ps.setString(1, "1001");

ResultSet rs=ps.executeQuery();

使用JDBC 高级功能创建应用程序

使用PreparedStatement 对象查询和修改数据(续)

?插入数据行

?以下是通过在运行时传递作者数据,创建一个可向authors表插入数据行的PreparedStatement对象的代码片断:

String str = "INSERT INTO authors (au_id, au_fname,

au_lname) VALUES (?, ?, ?)";

PreparedStatement ps = con.prepareStatement(str);

ps.setString(1, "1001");

ps.setString(2, "Abraham");

ps.setString(3, "White");

int rt=ps.executeUpdate();

使用JDBC 高级功能创建应用程序

使用PreparedStatement 对象查询和修改数据(续)

?更新和删除数据行

?以下是使用PreparedStatement对象将authors表中city为Oakland改为CA 的代码片断:

String str = "UPDATE authors SET state= ? WHERE city= ? ";

PreparedStatement ps = con.prepareStatement(str);

ps.setString(1, "CA");

ps.setString(2, "Oakland");

int rt=ps.executeUpdate();

使用JDBC 高级功能创建应用程序

使用PreparedStatement 对象查询和修改数据(续)

?以下是使用PreparedStatement对象删除authors表中作者名为Abraham的数据行的代码片断:

String str = "DELETE FROM authors WHERE au_fname= ? ";

PreparedStatement ps = con.prepareStatement(str);

ps.setString(1, "Abraham");

int rt=ps.executeUpdate();

使用JDBC 高级功能创建应用程序

演示-使用PreparedStatement 对象创建应用程序

?问题陈述

?百货公司的管理人员决定要用程序来管理存货。你被要求创建产品信息应用程序,此程序要有交互式的用户界面,允许用户添加、更新和删除product表的产品信息。

使用JDBC 高级功能创建应用程序

演示-使用PreparedStatement 对象创建应用程序(续)

?问题陈述(续)

?应用程序的用户界面应按下图设计:

使用JDBC 高级功能创建应用程序

演示-使用PreparedStatement 对象创建应用程序(续)

?解决方案

?使用java.swing包创建应用程序的GUI。使用PreparedStatement对象执行数据库操作。

?要解决上述问题,需要执行以下任务:

1.编写应用程序。

2.编译并执行应用程序。

使用JDBC 高级功能创建应用程序

管理数据库事务

?事务:

?作为一个独立单元执行的一组一个或多个SQL 语句。

?只有成功地执行一个事务中所有SQL 语句时才算完成。

?可以保持数据库中数据的一致性。

使用JDBC 高级功能创建应用程序

管理数据库事务(续)

?JDBC API 支持事务管理。

?在JDBC 应用程序中有以下两种提交数据库事务的方法:

?隐式:Connection对象使用自动提交模式,隐式执行SQL 语句。

?显式:设置自动提交模式为否,从而显式提交事务语句。设置自动提交模式为否的方法调用为:

con.setAutoCommit(false);

使用JDBC 高级功能创建应用程序

管理数据库事务(续)

?提交事务

?commit()方法是用来反映数据库中事务所作的更改。

?rollback()方法是撤销最后一次提交操作后数据库的更改。

?需要显式调用commit()和rollback()方法。

使用JDBC 高级功能创建应用程序

执行批处理更新

?批处理:

?是一组传递到数据库中作为一个独立单元执行的更新语句。

?可减少应用程序和数据库间的网络调用。

?与一个单独SQL语句的处理相比更加有效。

使用JDBC 高级功能创建应用程序

执行批处理更新(续)

?在JDBC 中执行批处理更新

?Statement 或PreparedStatement 接口提供以下方法创建和执行批量SQL 语句:

?void addBatch(): 向批处理中添加SQL 语句。

?int executeBatch(): 向数据库发送批量SQL 语句进行处理并返回更新

的总行数。

?void clearBatch(): 从批处理中删除SQL 语句。

相关主题
文本预览
相关文档 最新文档