1、习题一、选择题(答案可能不止一个)1使用下面的Connection 的哪个方法可以建立一个PreparedStatement接口( )AcreatePrepareStatement()BprepareStatement()CcreatePreparedStatement()DpreparedStatement()2在JDBC中可以调用数据库的存储过程的接口是( )AStatementBPreparedStatementCCallableStatementDPrepareStatement3下面的描述正确的是( )APreparedStatement继承自StatementBStatement继
2、承自PreparedStatementCResultSet继承自StatementDCallableStatement继承自PreparedStatement4下面描述中,错误的是( )AStatement的executeQuery()方法会返回一个结果集BStatement的executeUpdate()方法会返回是否更新成功的boolean值C使用ResultSet中的getString()可以获得一个对应于数据库中char类型的值DResultSet中的next()方法会使结果集中的下一行成为当前行5如果数据库中某个字段为numeric型,可以通过结果集中的哪个方法获取?( )AgetN
3、umeric()BgetDouble()CsetNumeric()DsetDouble()6在JDBC中使用事务,想要回滚事务的方法是( )AConnection的commit()BConnection的setAutoCommit()CConnection的rollback()DConnection的close()7查询操作的结果是( )A. 整数B. ResultSetC. SetD. Vector8增删改操作的结果是( )A. 整数B. ResultSetC. SetD. Vector9结果集中,能够实现指针下移一条记录是( )方法A. new()B. next()C. nextPoint
4、er()D. last()10要得到结果集double类型字段的数据,可调用( )方法A. get(价格) B. getInt(价格)C. getString(价格)D. getDouble(价格)二、填空题1JDBC的典型用法是“三层结构”,即:客户端、_、_;2加载驱动程序的语句是_;3创建Connection对象的语句是_;4生成Statement对象的语句是_;5执行查询操作的语句是_;6执行增删改操作的语句是_。三、思考题1请简述一下Statement 和 PreparedStatement之间的区别;2简述进行数据库连接、操作的主要步骤;3谈一谈你对Transaction(事务)的
5、认识,描述一下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数据库
6、系统,创建了一个名为corejava的数据库,用户名为sise,密码为software,具有读、写权限。在该数据库中还包含一个users表,该表各字段的内容如下表1所示:表1 users表结构字段名数据类型是否允许为空说明nameVarchar(10)否用户名,主键passwordVarchar(20)否密码ageint是年龄sexVarchar(2)是性别emailVarchar(100)否电子邮箱resumeVarchar(200)是个人简历请编程实现数据库连接,并具备如下功能:(1)输入用户资料:用户名、密码、年龄、性别、电子邮箱、个人简历,能将这些信息保存到数据库中;(2)输入用户名、
7、密码,能判断该用户是否已注册。3利用JDBC连接数据库,只要提供访问数据库的相关参数:驱动程序、URL、用户名、密码 即可,之后执行相应的SQL语句。现在请你编写一个数据库操作的通用类,实现查询、增删改操作功能。要求如下:class MyDB /连接数据库public Connection getConnection(String driverName, String URL, String userName, String password)./*执行SQL语句,有可能是select、insert、update、delete语句中的任何一个,要对参数sql先进行判断,再分类处理:如为查询语句
8、,需将结果集中的所有行、列数据显示输出;若是增删改语句,除执行对应操作外,还要输出“增加(修改、删除)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文档。)