【问题标题】:My program is not updating the table in sqlite JavaFX我的程序没有更新 sqlite JavaFX 中的表
【发布时间】:2018-04-23 03:10:39
【问题描述】:

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

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

请帮忙

【问题讨论】:

  • 好吧对不起!你能撤消否决票吗?
  • 如果您要像使用Statement 那样构建查询结构,为什么还要使用PreparedStatement

标签: java eclipse sqlite jdbc javafx


【解决方案1】:

您的代码将自动提交设置为false,但它从不提交。一旦连接被破坏,更改将丢失。

通过不禁用自动提交来修复它,或者在关闭连接之前执行明确的con.commit()

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

【讨论】:

  • 非常感谢。这对我有用。明天是我的最后期限,你救了我的命。
  • @DaBoss:太好了!你应该考虑接受这个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
相关资源
最近更新 更多