JDBC面试题及答案(实战版).docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

JDBC面试题及答案(实战版)

1.什么是JDBC?它的核心作用是什么?

答案:JDBC是JavaDatabaseConnectivity的缩写,本质是Java提供的一套操作数据库的API(接口+抽象类),比如java.sql.Connection、java.sql.Statement等。

核心作用是“跨数据库统一访问”——不管是MySQL、Oracle还是PostgreSQL,Java程序都能通过JDBC的标准接口操作,不用因数据库类型不同改写代码。比如用JDBC查MySQL和查Oracle,加载的驱动不同,但调用的executeQuery()方法是一样的。

2.用JDBC连接MySQL的完整步骤是什么?请写关键代码(以MySQL8.0为例)

答案:共5步,关键代码带实际配置:

//1.加载驱动(MySQL8.0驱动类名:com.mysql.cj.jdbc.Driver,5.7是com.mysql.jdbc.Driver)

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

//2.获取数据库连接(URL需带时区参数,否则可能报错)

Stringurl=jdbc:mysql://localhost:3306/test_db?serverTimezone=UTCuseSSL=false;

Stringuser=root;

Stringpwd=123456;

Connectionconn=DriverManager.getConnection(url,user,pwd);

//3.创建执行SQL的对象(这里用PreparedStatement防注入)

Stringsql=SELECT*FROMuserWHEREid=?;

PreparedStatementpstmt=conn.prepareStatement(sql);

pstmt.setInt(1,1);//给?占位符赋值

//4.执行SQL并处理结果

ResultSetrs=pstmt.executeQuery();//查询用executeQuery,增删改用executeUpdate

while(rs.next()){//遍历结果集

System.out.println(用户名:+rs.getString(username));

}

//5.关闭资源(顺序:ResultSet→Statement→Connection,用finally保证关闭)

finally{

if(rs!=null)rs.close();

if(pstmt!=null)pstmt.close();

if(conn!=null)conn.close();

}

3.Statement和PreparedStatement的区别?实际开发中用哪个?

答案:核心区别3点,实际开发优先用PreparedStatement:

SQL注入风险:Statement直接拼接SQL,比如SELECT*FROMuserWHEREname=+inputName+,若inputName是OR1=1,会变成查询所有数据,有注入风险;PreparedStatement用?占位符,参数单独赋值,自动转义特殊字符,能防注入。

性能:PreparedStatement会预编译SQL(第一次执行时编译,后续同结构SQL直接用编译结果),若多次执行相同SQL(比如批量插入),性能比Statement高;Statement每次执行都重新编译。

代码可读性:PreparedStatement参数和SQL分离,比如pstmt.setInt(1,id)比拼接字符串更清晰。

4.JDBC怎么控制事务?比如转账场景(A减钱、B加钱,必须同时成功或失败)

答案:JDBC默认事务是“自动提交”(执行SQL后立刻提交),需手动关闭自动提交,再手动控制提交/回滚:

Connectionconn=null;

try{

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

conn.setAutoCommit(false);//1.关闭自动提交,开启手动事务

//执行转账SQL(A减100,B加100)

PreparedStatementpstmt1=conn.prepareStatement

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档