我的程序没有更新sqlite JavaFX中的表

时间:2017-11-09 23:38:59

标签: java eclipse sqlite jdbc javafx

我的程序应该更新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();
        }  
    }

它没有给我任何错误,但它没有改变那个单元格的内容。

enter image description here 请帮忙

1 个答案:

答案 0 :(得分:0)

您的代码正在设置自动提交到false,但它永远不会提交。一旦连接被破坏,更改将会丢失。

通过不关闭自动提交来修复它,或在关闭连接之前执行显式con.commit()

请注意,对于您显示的查询,没有理由禁用自动提交,因为只有一个UPDATE查询,SELECT查询不会修改数据库。