// 在使用事务commit时,没有成功插入数据却占用了id
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class CommitTest {
public static void main(String[] args) {
BeanDataBase db = new BeanDataBase();
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try (Connection connection = DriverManager.getConnection(db.getUrl(), db.getUserName(), db.getPassWord());
PreparedStatement preparedStatement = connection.prepareStatement(
"insert into employee(name,email,salary)values(?,?,?)", Statement.RETURN_GENERATED_KEYS);) {
connection.setAutoCommit(false);
preparedStatement.setString(1, "lang");
preparedStatement.setString(2, "lang@qq.com");
preparedStatement.setInt(3, 899);
preparedStatement.executeUpdate();
ResultSet resultSetKsy = preparedStatement.getGeneratedKeys();
while (resultSetKsy.next()) {
System.out.println("试图添加id为" + resultSetKsy.getInt(1) + "的数据");
}
@SuppressWarnings("resource")
String in = new Scanner(System.in).nextLine();
while (true) {
if (in.equals("Y")) {
connection.commit();
System.out.println("添加成功");
break;
} else {
// 虽然没有成功插入数据,但当插入新数据时,id却不是连贯的,
// 未出现的id都是没有commit的sql语句中的id
System.out.println("删除失败");
break;
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
MySQL使用commit时自增ID的问题
最新推荐文章于 2022-09-24 15:31:22 发布