使用java坚持使用sqlite事务

时间:2015-06-28 17:46:52

标签: java sqlite transactions

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的新手,我没有得到这里的实际问题,请任何人指导我或帮助我让它运行..

2 个答案:

答案 0 :(得分:0)

如果你不打电话,

stmt.getConnection().commit() 

而不是

stmt.execute("COMMIT");

答案 1 :(得分:0)

我没有看到你在哪里开始交易,这也是两个错误消息所指示的内容。尝试

stmt.execute("BEGIN");

在第3行开始交易。