JDBC代码执行后数据库里的表格没有发生任何变化 代码无报错 请问问题出在哪里
代码如下package com.itheima.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
/**
* JDBC快速入门
*/
public class JDBCDemo_Connection {
public static void main(String[] args) throws Exception {
//1. 注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 获取连接
String url = "jdbc:mysql:///db1";
String username = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, username, password);
//3. 定义sql
String sql1 = "update users set money = 3210 where id = 2";
String sql2 = "update users set money = 1500 where id = 1";
//4. 获取执行sql的对象 Statement
Statement stmt = conn.createStatement();
//5. 执行sql
try {
conn.setAutoCommit(false);
int count1 = stmt.executeUpdate(sql1);//受影响的行数
System.out.println(count1);
int count2 = stmt.executeUpdate(sql2);//受影响的行数
System.out.println(count2);
} catch (Exception throwables) {
conn.rollback();
throwables.printStackTrace();// TODO: handle exception
}
//6. 处理结果
//System.out.println(count1 + count2);
//7. 释放资源
stmt.close();
conn.close();
}
}
想用这段代码改变表格里字段money的数值加上try/catch前 可以成功执行并改变数据 但是加上try/catch后 依然可以成功执行 并打印被影响的行数 只是数据库里的表格没有发生任何变化 是我的代码有问题吗? 谢谢万能的小助手。 你的代码逻辑上是正确的。执行了更新操作后,数据库中对应的表格应该发生变化。但是在你的代码中,缺少了提交事务的步骤。当你将连接的自动提交设置为false时,需要手动调用commit()方法来提交事务。
你可以将以下代码片段添加到你的代码中,来进行事务的提交:
//8. 提交事务
conn.commit();
在catch语句块中,你已经添加了回滚事务的逻辑,可以保证事务失败时能够回滚更新。但是在事务成功时,你需要手动提交事务才能使得数据库中对应的表格发生变化。
希望这个解答对你有帮助!如有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]