try {
stmt = con.createStatement();
stmt.getConnection().setAutoCommit(false);
try {
for (String q : query) {
if (q != null && !q.equals("")) {
stmt.executeUpdate(q);
}
}
stmt.execute("COMMIT");
stmt.getConnection().setAutoCommit(true);
stmt.close();
JOptionPane.showMessageDialog(frame, "Details Successfully Added.",
"Information", JOptionPane.INFORMATION_MESSAGE);
} catch (SQLException ex) {
System.out.println("Rollback:\n " ex.getMessage());
stmt.execute("ROLLBACK");
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(frame,ex.getMessage(),
"Exception Occured", JOptionPane.ERROR_MESSAGE);
}
我已经编写了上面的代码来使用事务插入多个记录,但是当我执行它时,它有时会在成功插入记录时给我could not commit no transaction is running
,有时候could not rollback no transaction is active
。
因为我是sqlite和java的新手,我没有得到这里的实际问题,请任何人指导我或帮助我让它运行..
答案 0 :(得分:0)
如果你不打电话,
stmt.getConnection().commit()
而不是
stmt.execute("COMMIT");
答案 1 :(得分:0)
我没有看到你在哪里开始交易,这也是两个错误消息所指示的内容。尝试
stmt.execute("BEGIN");
在第3行开始交易。