在Java中,使用JDBC进行数据库操作时,如果需要实现事务管理(包括添加失败回滚),可以通过以下步骤来实现:

  1. 关闭自动提交(autoCommit)模式。
  2. 执行数据库操作。
  3. 如果所有操作都成功,提交事务。
  4. 如果任何操作失败,回滚事务。

示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DatabaseTransactionExample {

    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "username";
        String password = "password";

        Connection connection = null;
        PreparedStatement preparedStatement = null;

        try {
            // 1. 加载数据库驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2. 获取数据库连接
            connection = DriverManager.getConnection(url, user, password);

            // 3. 关闭自动提交模式
            connection.setAutoCommit(false);

            // 4. 准备SQL语句
            String sql = "INSERT INTO mytable (column1, column2) VALUES (?, ?)";
            preparedStatement = connection.prepareStatement(sql);

            // 5. 设置参数并执行第一个插入操作
            preparedStatement.setString(1, "value1");
            preparedStatement.setString(2, "value2");
            preparedStatement.executeUpdate();

            // 6. 模拟第二个插入操作失败
            preparedStatement.setString(1, "value3");
            preparedStatement.setString(2, "value4");
            preparedStatement.executeUpdate();

            // 7. 如果所有操作都成功,提交事务
            connection.commit();
            System.out.println("Transaction committed successfully.");

        } catch (ClassNotFoundException e) {
            System.err.println("Database driver not found.");
            e.printStackTrace();
        } catch (SQLException e) {
            System.err.println("SQL Exception occurred.");
            e.printStackTrace();

            // 8. 如果发生异常,回滚事务
            if (connection != null) {
                try {
                    connection.rollback();
                    System.out.println("Transaction rolled back successfully.");
                } catch (SQLException ex) {
                    System.err.println("Rollback failed.");
                    ex.printStackTrace();
                }
            }
        } finally {
            // 9. 关闭资源
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                System.err.println("Failed to close resources.");
                e.printStackTrace();
            }
        }
    }
}
  1. 加载数据库驱动。
  2. 获取数据库连接。
  3. 关闭自动提交模式。
  4. 准备SQL语句。
  5. 设置参数并执行第一个插入操作。
  6. 模拟第二个插入操作失败(假设第二个插入操作会导致异常)。
  7. 如果所有操作都成功,提交事务。
  8. 如果发生异常,回滚事务。
  9. 关闭资源。

请根据实际情况修改数据库连接URL、用户名、密码以及SQL语句。