资源描述
习题
一、选择题(答案可能不止一个)
1.使用下面的Connection 的哪个方法可以建立一个PreparedStatement接口( )
A.createPrepareStatement() B.prepareStatement()
C.createPreparedStatement() D.preparedStatement()
2.在JDBC中可以调用数据库的存储过程的接口是( )
A.Statement B.PreparedStatement C.CallableStatement D.PrepareStatement
3.下面的描述正确的是( )
A.PreparedStatement继承自Statement B.Statement继承自PreparedStatement
C.ResultSet继承自Statement D.CallableStatement继承自PreparedStatement
4.下面描述中,错误的是( )
A.Statement的executeQuery()方法会返回一个结果集
B.Statement的executeUpdate()方法会返回是否更新成功的boolean值
C.使用ResultSet中的getString()可以获得一个对应于数据库中char类型的值
D.ResultSet中的next()方法会使结果集中的下一行成为当前行
5.如果数据库中某个字段为numeric型,可以通过结果集中的哪个方法获取?( )
A.getNumeric() B.getDouble() C.setNumeric() D.setDouble()
6.在JDBC中使用事务,想要回滚事务的方法是( )
A.Connection的commit() B.Connection的setAutoCommit()
C.Connection的rollback() D.Connection的close()
7.查询操作的结果是( )
A. 整数 B. ResultSet C. Set D. Vector
8.增删改操作的结果是( )
A. 整数 B. ResultSet C. Set D. Vector
9.结果集中,能够实现指针下移一条记录是( )方法
A. new() B. next() C. nextPointer() D. last()
10.要得到结果集double类型字段的数据,可调用( )方法
A. get("价格") B. getInt("价格") C. getString("价格") D. getDouble("价格")
二、填空题
1.JDBC的典型用法是“三层结构”,即:客户端、____________、____________;
2.加载驱动程序的语句是_______________________________;
3.创建Connection对象的语句是_______________________________;
4.生成Statement对象的语句是_______________________________;
5.执行查询操作的语句是_______________________________;
6.执行增删改操作的语句是_______________________________。
三、思考题
1.请简述一下Statement 和 PreparedStatement之间的区别;
2.简述进行数据库连接、操作的主要步骤;
3.谈一谈你对Transaction(事务)的认识,描述一下Transaction的四个特性;
4.说明JDBC事务所涉及的方法,并加以解释;
5.结果集可滚动有什么优点?怎样实现结果集的更新?
四、编程题
1.现有一个名为课程.mdb的Access数据库,只包含一个表courses,该表的字段如下:
课程代码(文本,长度6,主键),课程名称(文本,长度60),教学承担系(文本,长度30),
学分(单精度),考核方式(文本,长度10),如图1所示:
图1 course表记录
现要求采用JDBC/ODBC桥方式连接数据库,编程显示出“软件工程系”开设的所有“考试”课程的信息。
2.在IP为172.16.42.234的服务器上安装了SQL Server 2005数据库系统,创建了一个名为corejava的数据库,用户名为sise,密码为software,具有读、写权限。在该数据库中还包含一个users表,该表各字段的内容如下表1所示:
表1 users表结构
字段名
数据类型
是否允许为空
说明
name
Varchar(10)
否
用户名,主键
password
Varchar(20)
否
密码
age
int
是
年龄
sex
Varchar(2)
是
性别
email
Varchar(100)
否
电子邮箱
resume
Varchar(200)
是
个人简历
请编程实现数据库连接,并具备如下功能:
(1)输入用户资料:用户名、密码、年龄、性别、电子邮箱、个人简历,能将这些信息保存到数据库中;
(2)输入用户名、密码,能判断该用户是否已注册。
3.利用JDBC连接数据库,只要提供访问数据库的相关参数:驱动程序、URL、用户名、密码 即可,之后执行相应的SQL语句。现在请你编写一个数据库操作的通用类,实现查询、增删改操作功能。要求如下:
class MyDB {
//连接数据库
public Connection getConnection(String driverName, String URL, String userName, String password){
….
}
/*执行SQL语句,有可能是select、insert、update、delete语句中的任何一个,要对参数sql先进行判断,再分类处理:如为查询语句,需将结果集中的所有行、列数据显示输出;若是增删改语句,除执行对应操作外,还要输出“增加(修改、删除)xx条记录”。*/
public void execute(Connection connString, String sql){
….
}
}
之后,请你创建一个DBTest类,使用有关参数和SQL语句来操作一个具体的数据库,以检验MyDB类的功能。
(提示:
①可调用String类startsWith(String prefix)方法来判断sql参数是属于select、insert、update、delete语句中的哪一种,再执行对应操作;
②执行查询语句时,要输出结果集的内容,这需要用到输出列的数目、名称或序号、各列的数据类型等内容。由于select语句是以参数方式提供,编写程序时无法得到有关信息,可求助“元数据”来实现,由ResultSet对象调用getMetaData()方法可得到 ResultSetMetaData对象,通过ResultSetMetaData对象的getColumnCount()可得到select语句查询的列数,之后用ResultSet对象调用getObject(int columnIndex)可得到各列数据(参数是列序号,从1开始),具体内容请查阅API文档。
)
展开阅读全文