JDBC 基础测试题及详细答案_第1页
JDBC 基础测试题及详细答案_第2页
JDBC 基础测试题及详细答案_第3页
JDBC 基础测试题及详细答案_第4页
JDBC 基础测试题及详细答案_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

JDBC基础测试题及详细答案适用场景:Java后端基础面试、期末考核、入职基础测评考试说明:满分100分,答题时间60分钟一、单项选择题(共10题,每题3分,共30分)1.以下关于JDBC的核心作用描述,正确的是()A.专门用于创建数据库B.是Java程序连接和操作数据库的一套标准APIC.是一种新型数据库D.用于优化Java代码性能2.JDBC连接数据库的核心步骤中,必不可少的第一步是()A.执行SQL语句B.加载数据库驱动C.关闭资源D.处理结果集3.MySQL数据库的标准JDBC驱动类全名是()A.com.mysql.jdbc.DriverB.com.mysql.cj.jdbc.DriverC.mysql.jdbc.DriverD.com.mysql.driver.JdbcDriver4.以下哪个对象用于执行静态SQL语句并返回结果集()A.ConnectionB.StatementC.PreparedStatementD.ResultSet5.关于PreparedStatement,下列说法错误的是()A.可以有效防止SQL注入攻击B.支持SQL语句预编译,执行效率更高C.必须手动拼接SQL参数D.使用占位符?替代动态参数6.JDBC中,用于存储数据库查询结果的对象是()A.ConnectionB.StatementC.ResultSetD.DriverManager7.执行DML语句(增删改)时,优先使用哪个方法()A.executeQuery()B.executeUpdate()C.execute()D.getUpdate()8.以下关于JDBC资源关闭的说法,正确的是()A.只需关闭Connection即可B.资源关闭顺序:Connection>Statement>ResultSetC.必须依次关闭ResultSet、Statement、ConnectionD.程序结束后资源会自动释放,无需手动关闭9.开启JDBC事务后,用于提交事务的方法是()A.commit()B.rollback()C.setAutoCommit()D.save()10.解决JDBC数据库乱码问题,需要在URL中添加的参数是()A.useSSL=trueB.characterEncoding=utf-8C.serverTimezone=GMT%2B8D.allowMultiQueries=true二、填空题(共5题,每题4分,共20分)1.JDBC的全称是________________________。2.JDBC四大核心对象分别是:Driver、Connection、__________、__________。3.默认情况下,JDBC事务是__________(自动/手动)提交模式。4.ResultSet结果集默认指针指向__________,需要调用__________方法移动指针读取数据。5.SQL注入的核心成因是____________________________________。三、简答题(共3题,每题10分,共30分)1.简述JDBC完整的数据库操作六大步骤。2.对比Statement和PreparedStatement的区别,说明开发中优先使用PreparedStatement的原因。3.简述JDBC事务的三大特性,以及事务提交和回滚的使用场景。四、编程题(共1题,20分)需求:使用JDBC完成MySQL数据库用户表的新增数据操作已知条件:1.数据库名:test_db,表名:user2.表字段:id(主键自增)、username(用户名)、password(密码)、age(年龄)3.数据库账号:root,密码:123456要求:1.使用PreparedStatement实现,避免SQL注入2.手动处理异常,手动关闭所有资源3.插入一条数据:username=test,password=123abc,age=20五、详细参考答案一、单项选择题答案及解析1.B解析:JDBC是Java数据库连接标准API,用于Java程序对接各类关系型数据库,并非数据库工具或编程语言,也不能创建数据库。2.B解析:所有JDBC操作的前提是加载对应数据库的驱动,注册驱动后才能获取数据库连接。3.B解析:MySQL8.0及以上版本使用com.mysql.cj.jdbc.Driver,旧版本驱动com.mysql.jdbc.Driver已废弃。4.B解析:Statement用于执行静态SQL;PreparedStatement用于执行预编译SQL;Connection是连接对象,ResultSet是结果集对象。5.C解析:PreparedStatement使用占位符?设置参数,无需手动拼接字符串,有效避免SQL注入,且支持预编译复用。6.C解析:ResultSet专门用于封装select查询返回的数据库结果集。7.B解析:executeUpdate()用于执行增、删、改DML语句,返回受影响的行数;executeQuery()仅用于查询。8.C解析:JDBC资源必须手动关闭,关闭顺序遵循后开先关:ResultSet>Statement>Connection,避免资源泄露。9.A解析:commit()提交事务,rollback()回滚事务,setAutoCommit()设置事务自动提交状态。10.B解析:characterEncoding=utf-8指定数据库编码格式,解决中文乱码;serverTimezone用于配置时区。二、填空题答案1.JavaDataBaseConnectivity(Java数据库连接)2.Statement、ResultSet3.自动4.第一行数据之前、next()5.程序直接拼接用户输入参数到SQL语句中,用户可恶意篡改SQL逻辑三、简答题答案1.JDBC六大核心操作步骤①加载数据库驱动:通过反射加载对应数据库的驱动类,完成驱动注册;②获取数据库连接:使用DriverManager获取Connection连接对象,绑定数据库地址、账号、密码;③创建SQL执行对象:通过Connection创建Statement或PreparedStatement对象;④执行SQL语句:根据操作类型,调用对应方法执行增删改查SQL;⑤处理返回结果:查询操作遍历ResultSet结果集,增删改操作获取受影响行数;⑥关闭资源:按照后开先关的顺序,依次关闭结果集、执行对象、连接对象。2.Statement与PreparedStatement的区别及选型原因区别:①语法不同:Statement直接执行拼接好的完整SQL;PreparedStatement使用?占位符预编译SQL,单独设置参数;②安全性不同:Statement存在严重SQL注入风险,PreparedStatement可彻底杜绝SQL注入;③效率不同:PreparedStatement支持SQL预编译,语句可复用,批量操作效率更高;Statement每次都会重新编译SQL;④可读性不同:PreparedStatement代码结构更清晰,无需复杂字符串拼接。优先使用PreparedStatement的原因:安全防注入、执行效率高、代码简洁易维护,是企业开发标准用法。3.JDBC事务特性及使用场景JDBC事务遵循数据库ACID三大核心特性(核心常用):①原子性:事务内所有操作要么全部成功,要么全部失败回滚,不可拆分;②一致性:事务执行前后,数据库数据状态保持一致,不会出现数据错乱;③隔离性:多个事务并发执行时,相互独立、互不干扰。使用场景:关闭自动提交(setAutoCommit(false))后,一组关联SQL全部执行成功时,调用commit()提交事务,持久化数据;任意SQL执行失败、抛出异常时,调用rollback()回滚事务,撤销所有操作,保证数据安全。四、编程题参考答案java

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.PreparedStatement;

importjava.sql.SQLException;

publicclassJdbcInsertDemo{

publicstaticvoidmain(String[]args){

//1.定义数据库连接参数

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

Stringurl="jdbc:mysql://localhost:3306/test_db?characterEncoding=utf-8&serverTimezone=GMT%2B8";

Stringuser="root";

Stringpassword="123456";

Connectionconn=null;

PreparedStatementpstmt=null;

try{

//2.加载驱动

Class.forName(driver);

//3.获取数据库连接

conn=DriverManager.getConnection(url,user,password);

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

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

//5.创建预编译执行对象

pstmt=conn.prepareStatement(sql);

//6.给占位符赋值

pstmt.setString(1,"test");

pstmt.setString(2,"123abc");

pstmt.setInt(3,20);

//7.执行SQL,获取受影响行数

introws=pstmt.executeUpdate();

System.out.println("数据插入成功,受影响行数:"+rows);

}catch(Exceptione){

e.printStackTrace();

}finally{

//8.关闭资源,后开先关

try{

if(pstmt!=null){

pstmt.close();

}

}catch(SQLExceptione){

e.printStackTrace();

}

try{

if(conn!=null){

conn.close

温馨提示

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

评论

0/150

提交评论