当 i==501 抛出 NullPointerException 时,程序跳转到 catch 块,确实没有执行到 JdbcUtils.commit(conn),所以已经执行的那些 SQL(比如前 500 条)不会被提交到数据库,这一点是正确的。
i==501
NullPointerException
catch
JdbcUtils.commit(conn)
rollback
虽然事务未提交,但数据库连接上仍然持有这个未结束的事务,数据库内部可能已经对该事务中的操作(如插入、锁等)做了部分记录或资源占用。如果不显式回滚,而是直接关闭连接(finally 中的 closeResource),那么:
finally
closeResource
使用普通 JDBC 连接:大多数 JDBC 驱动在 Connection.close() 时会隐式回滚未提交的事务,看起来好像不需要手动回滚也能保证数据不写入。但这是一种隐式行为,不同驱动实现可能不同,依赖它并不可靠。
Connection.close()
使用连接池(如 Druid、HikariCP 等):Connection.close() 通常只是归还连接,并不真正关闭物理连接,此时连接上的未提交事务不会被自动回滚,该事务依然处于未提交状态。下次从池中取出该连接时,事务状态可能被复用,导致数据混乱、死锁等问题。
因此,最佳实践是在 catch 块中显式调用 rollback,确保无论连接是否真的关闭,事务都会被正确终止,释放数据库锁和资源。
这个插数据中文是问好但是我看数据库哪里给的是utf8为什么还会出现数据库??的现象
创建外键,保存的时候变成索引,外键中什么也没有是怎么回事
按照这个一行一行运行的,没有commit事务提交,为什么关闭数据库后打开数据还是变化了
为什么properties文件路径一定要在src下,换个路径就会报空指针异常
我想问一下这个报错说是数据库密码错了,但我运行另一个jdbctest2代码就成功了,这不就说明我的密码是对的么,但为什么在测试这个statementTest代码时它又显示错误了
1.jpg
2.jpg
3.jpg
老师,发一下安装包 v:L92907
mysql8的出现“1410 - You are not allowed to create a user with GRANT”时。我们要先删除u_sxt,在重新创建。视频老师教我们创建的u_sxt的权限是%。我们要改成localhost,才行。
改成CREATE USER 'u_sxt'@'localhost' IDENTIFIED BY 'sxt';
ENGINE=InnoDB DEFAULT CHARSET=utf8;
老师这句sql语句表示的是什么意思 前面好像没有讲过
public static void closeConnection(Connection connection){ try { connection.close(); } catch (SQLException e) { throw new RuntimeException(e); } }
老师我这 catch 里的值跟课程中的代码不一样 有什么区别吗
package com.itbaizhan; import javax.swing.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /* 获取数据库链接测试类 */ public class JdbcTest { public static void main(String[] args) throws ClassNotFoundException, SQLException { //链接mysql数据库的url String url = "jdbc:mysql://localhost:3306/itbz useSSL = false" ; //链接数据库的用户名 String name = "root"; //链接数据库的密码 String pwd = "root"; //通过反射实现数据库驱动的加载与注册 Class.forName("com.mysql.jdbc.Driver"); //通过DriverManager对象获取数据库的链接对象 Connection connection = DriverManager.getConnection(url, name, pwd); System.out.println(connection); } }
老师我这显示链接失败是怎么回事
老师,这个选什么呀
老师,是不是没有注册root这个用户,还是权限没开
为什么没有任何反应呢老师。
为社么要在外面定义一个空Connection
不直接在里面定义
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战未来微信公众号
百战未来微信小程序
©2014-2026百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637