我的程序应该更新Rooms表中的'isAvail':
public void RemRoom() {
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
con = DriverManager.getConnection("jdbc:sqlite:Rooms.db");
con.setAutoCommit(false);
System.out.println("1");
pst = con.prepareStatement("UPDATE " + tp + " set isAvail = 'false' where RoomID = '" + rm + "'");
pst.execute();
pst = con.prepareStatement("Select isAvail from " + tp + " Where RoomID = '" + rm + "'");
rs = pst.executeQuery();
System.out.println(rs.toString());
System.out.println("2");
pst.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
它没有给我任何错误,但它没有改变那个单元格的内容。
答案 0 :(得分:0)
您的代码正在设置自动提交到false
,但它永远不会提交。一旦连接被破坏,更改将会丢失。
通过不关闭自动提交来修复它,或在关闭连接之前执行显式con.commit()
。
请注意,对于您显示的查询,没有理由禁用自动提交,因为只有一个UPDATE
查询,SELECT
查询不会修改数据库。