我有一个问题,我似乎无法让这个简单的删除命令工作。每次我运行它只会锁定数据库并崩溃
数据库中存在id参数 数据库很小。只有几张桌子。 更新命令完全正常。
id是in,结果命令是 - DELETE from Employees where ID = 2;
public static void EmployeeDeleteByID(int idIn){
Connection c = null;
Statement stmt = null;
try {
c = Connect();
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "DELETE from Employees where ID = " + idIn + ";";
System.out.println(sql);
stmt.executeUpdate(sql);
c.commit();
stmt.close();
c.close();
} catch ( Exception e ) {
System.err.println("Error 1 : " + e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
System.out.println("Operation done successfully");
}
运行后出错:java.sql.SQLException: database is locked
答案 0 :(得分:1)
“数据库已锁定”表示某些其他连接仍具有活动事务。
如果没有其他进程访问数据库,则必须检查程序中的所有连接;至少其中一人忘了commit()
。
答案 1 :(得分:0)
代码实际上运行正常。
事实证明,正在调用另一个方法来填充JCombo,由于从数据库调用null值导致错误,因此保持连接打开。
由于例外框中没有代码,因此并不明显。
愚蠢的小问题所以人们总是犯错误抛出某种堆栈跟踪或警告。
由于