JDBC Web 期末综合试题(含详细答案)_第1页
JDBC Web 期末综合试题(含详细答案)_第2页
JDBC Web 期末综合试题(含详细答案)_第3页
JDBC Web 期末综合试题(含详细答案)_第4页
JDBC Web 期末综合试题(含详细答案)_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JDBCWeb期末综合试题(含详细答案)适用范围:JavaWeb课程JDBC模块测验/课后作业/期末复习考试时长:90分钟满分:100分说明:试题贴合实际开发,无空洞理论,侧重基础原理、易错点、代码实操,适配日常教学考核一、单项选择题(共15题,每题2分,共30分)1.以下哪一项不是JDBC核心功能?()A.加载数据库驱动B.建立数据库连接C.编译Java源代码D.执行SQL语句并处理结果2.JDBC中负责建立数据库连接的核心类/接口是?()A.DriverB.ConnectionC.StatementD.ResultSet3.针对MySQL数据库,传统JDBC驱动类全名正确的是?()A.com.mysql.jdbc.DriverB.com.mysql.driver.DriverC.mysql.jdbc.DriverD.com.mysql.cj.jdbc.Driver4.下列关于Statement和PreparedStatement说法正确的是?()A.Statement安全性更高,可防止SQL注入B.PreparedStatement预编译SQL,效率更高,支持参数占位符C.两者功能完全一致,无区别D.PreparedStatement不能执行增删改查操作5.JDBC中用来存储查询结果集的接口是?()A.ConnectionB.PreparedStatementC.ResultSetD.DatabaseMetaData6.使用JDBC操作数据库,关闭资源的正确顺序是?()A.Connection→Statement→ResultSetB.ResultSet→Statement→ConnectionC.Statement→ResultSet→ConnectionD.任意顺序均可7.以下哪种问题是Statement拼接SQL语句最容易引发的?()A.内存溢出B.SQL注入漏洞C.端口占用异常D.数据库连接超时8.JDBCURL中,用来指定数据库名称的参数位置正确的是?()A.jdbc:mysql://localhost:3306/数据库名B.jdbc:mysql://localhost:3306?db=数据库名C.jdbc:mysql/数据库名://localhost:3306D.jdbc:mysql://数据库名:3306/localhos9.关于JDBC事务,默认的提交方式是?()A.手动提交B.自动提交C.事务不提交D.批量提交10.想要开启JDBC手动事务,需要执行以下哪个代码?()A.conn.setAutoCommit(true);B.conn.setAutoCommit(false);C.mit();D.conn.rollback();11.ResultSet遍历结果集,默认光标初始位置是?()A.第一行数据B.第一行数据之前C.最后一行数据D.最后一行数据之后12.以下哪项不属于JDBC事务的特性?()A.原子性B.一致性C.高效性D.持久性13.使用PreparedStatement设置int类型参数的方法是?()A.setString()B.setInt()C.setInteger()D.setValue()14.Web项目中JDBC操作数据库,将数据库配置信息写在哪个文件最规范?()A.java类文件B.jsp页面C.properties配置文件D.html页面15.数据库连接池的主要作用是?()A.加密数据库数据B.复用数据库连接,提升项目性能C.提高SQL语句执行速度D.防止SQL注入二、填空题(共10空,每空2分,共20分)1.JDBC的全称是________________________。2.JDBC操作数据库的四大核心对象是:Driver、Connection、____________、____________。3.MySQLJDBC连接端口默认是____________。4.事务操作中,提交事务的方法是____________,回滚事务的方法是____________。5.PreparedStatement使用____________作为参数占位符,有效防止SQL注入。6.遍历ResultSet结果集,常用循环方法是____________。7.Web项目中使用JDBC,必须将____________驱动包导入项目lib目录。8.关闭JDBC资源时,必须在____________代码块中执行,保证资源一定释放。三、简答题(共3题,每题6分,共18分)1.简述JDBC完整操作数据库的六大步骤。2.对比Statement与PreparedStatement的优缺点。3.简述JDBC事务的使用场景和核心操作流程。四、代码阅读题(共1题,12分)阅读以下JDBC查询代码,找出其中三处明显错误,并写出修正方案。java

publicclassJdbcTest{

publicstaticvoidmain(String[]args)throwsException{

//1.加载驱动

Class.forName("com.mysql.jdbc.Driver");

//2.获取连接

Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");

//3.创建Statement

Statementst=conn.createStatement();

//4.执行查询

Stringsql="select*fromuserwhereusername='"+username+"'";

ResultSetrs=st.executeQuery(sql);

//5.遍历结果

while(rs.next()){

System.out.println(rs.getString("username"));

}

//关闭资源

conn.close();

st.close();

rs.close();

}

}五、编程实操题(共1题,20分)需求:使用标准JDBC代码,实现用户数据新增功能数据库表:user字段:id(主键自增)、username(用户名)、password(密码)、age(年龄)要求:1.使用PreparedStatement实现,杜绝SQL注入2.手动开启事务,正常提交,异常回滚3.使用try-catch-finally处理异常,规范关闭所有资源4.代码注释清晰,格式规范——————详细参考答案及解析——————一、单项选择题答案及解析1.C解析:JDBC是数据库连接技术,负责数据库交互,不具备编译Java代码的功能。2.B解析:Connection是数据库连接对象,是JDBC操作的基础核心对象。3.D解析:MySQL8.0及以上版本使用新驱动类com.mysql.cj.jdbc.Driver,旧版本com.mysql.jdbc.Driver已废弃。4.B解析:PreparedStatement支持SQL预编译、参数占位、防止SQL注入,执行效率高于Statement。5.C解析:ResultSet是专门用于接收数据库查询结果的结果集对象。6.B解析:资源关闭遵循后开先关原则:结果集→语句对象→连接对象。7.B解析:Statement采用字符串拼接SQL,极易被恶意注入,存在严重安全漏洞。8.A解析:MySQL标准JDBCURL格式:jdbc:mysql://IP:端口/数据库名?参数。9.B解析:JDBC默认自动提交事务,执行一条SQL就自动提交一次。10.B解析:setAutoCommit(false)关闭自动提交,开启手动事务模式。11.B解析:ResultSet光标默认在第一行数据之前,需要调用next()方法下移读取数据。12.C解析:事务四大特性:原子性、一致性、隔离性、持久性,无高效性。13.B解析:PreparedStatement参数设置方法与数据类型对应,整型为setInt。14.C解析:将数据库地址、账号密码配置在properties文件,解耦代码,方便后期维护修改。15.B解析:连接池提前创建连接、复用连接,避免频繁创建销毁连接,大幅提升Web项目并发性能。二、填空题答案1.JavaDataBaseConnectivity(Java数据库连接)2.Statement(PreparedStatement)、ResultSet3.33064.commit()、rollback()5.?(问号)6.while(rs.next())7.mysql-connector-java(MySQL数据库驱动)8.finally三、简答题参考答案1.JDBC操作数据库六大步骤①加载数据库驱动,注册驱动到驱动管理器;②使用DriverManager获取数据库连接对象Connection;③创建SQL语句执行对象(Statement/PreparedStatement);④执行SQL语句(查询executeQuery、增删改executeUpdate);⑤处理执行结果(遍历结果集、判断受影响行数);⑥关闭所有JDBC资源,释放连接。2.Statement与PreparedStatement优缺点对比Statement:优点:写法简单,适合少量静态SQL执行;缺点:字符串拼接SQL,代码冗余、易出错,存在SQL注入漏洞,无预编译,重复执行效率低。PreparedStatement:优点:支持参数占位符,代码简洁安全,彻底防止SQL注入,SQL预编译,重复执行效率高;缺点:写法稍繁琐,不适合极简单的静态SQL场景。3.JDBC事务使用场景及核心流程使用场景:需要保证多条SQL语句要么全部执行成功,要么全部失败回滚的业务场景,例如转账、订单生成、数据批量新增等。核心流程:①获取数据库连接;②关闭自动提交,开启手动事务;③执行多条业务SQL语句;④无异常,调用commit()提交事务;⑤出现异常,调用rollback()回滚事务;⑥关闭资源。四、代码阅读题错误解析(三处错误)错误1:驱动类过时错误代码:com.mysql.jdbc.Driver修正:改为com.mysql.cj.jdbc.Driver(适配新版MySQL)错误2:存在未定义变量+SQL注入风险错误代码:直接拼接username变量,变量未定义且拼接方式有注入漏洞修正:使用PreparedStatement+?占位符传参,替换Statement,定义参数变量错误3:资源关闭顺序错误+无异常处理错误:先关闭连接再关闭语句和结果集,且未做异常捕获,报错会导致资源无法关闭修正:将关闭资源代码放入finally块,关闭顺序改为ResultSet→Statement→Connection五、编程实操题标准答案(完整可运行代码)java

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.PreparedStatement;

importjava.sql.SQLException;

/**

*JDBC用户新增实操题标准答案

*支持事务、防SQL注入、规范资源关闭

*/

publicclassUserAddDemo{

//数据库配置信息

privatestaticfinalStringDRIVER="com.mysql.cj.jdbc.Driver";

privatestaticfinalStringURL="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";

privatestaticfinalStringUSER="root";

privatestaticfinalStringPWD="123456";

publicstaticvoidmain(String[]args){

Connectionconn=null;

PreparedStatementpstmt=null;

try{

//1.加载驱动

Class.forName(DRIVER);

//2.获取连接

conn=DriverManager.getConnection(URL,USER,PWD);

//3.开启手动事务

conn.setAutoCommit(false);

//4.编写预编译SQL,使用?占位符

Stringsql="insertintouser(username,password,age)values(?,?,?)";

pstmt=conn.prepareStatement(sql);

//5.给占位符赋值

pstmt.setString(1,"zhangsan");

pstmt.setString(2,"123456");

pstmt.setInt(3,20);

//6.执行SQL

introws=pstmt.executeUpdate();

System.out.println("成功新增"+rows+"条数据");

//7.无异常,提交事务

mit();

}catch(Exceptione){

//出现异常,回滚事务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论