【问题标题】:I can't execute sqlite statement when running code normally, but in debug mode it works. How is it possible?正常运行代码时无法执行sqlite语句,但在调试模式下它可以工作。这怎么可能?
【发布时间】:2019-08-24 04:43:02
【问题描述】:

我有一个通过 JDBC 连接到我的 java 项目的 SQLite 数据库。我可以轻松读取所有数据并将新用户添加到我的数据库中,但是当我执行准备好的语句时,我得到一个 SQLexeption。在我以调试模式运行程序并在准备好的语句所在的行设置断点后,它可以毫无问题地完成任务。

我尝试切换代码,并且所有其他语句都可以正常工作,例如 INSERT 或 SELECT。只有 UPDATE(以任何形式)不起作用。我尝试在sql命令行中执行该语句并且它有效,所以没有问题。

public void makeReq(int type,String SPZ){
        String sql = "UPDATE users "
                + "SET req = ? "
                + "WHERE SPZ = ?";
        try {
            conn = DriverManager.getConnection("jdbc:sqlite:users.db");
            PreparedStatement pstmt = conn.prepareStatement(sql); 
            pstmt.setInt(1, type);
            pstmt.setString(2, SPZ);
            int rowAffected = pstmt.executeUpdate();


        } catch (SQLException e) {
            System.out.println("FATAL ERROR: couldn't connect to the USERS database");
        }
    }

我希望它执行并更新选定的表(用户)。

感谢您的帮助。

【问题讨论】:

  • 打印 SQLException 而不是您的自定义消息。
  • 它说数据库很忙,但是当我删除带有连接的行时,它说连接已关闭。
  • 您可以编辑您的问题并粘贴您看到的堆栈跟踪吗?
  • 我发现了问题,将其发布为答案。谢谢你的帮助,我不会发现那是我没有阅读 SQLExeption。

标签: java sqlite jdbc


【解决方案1】:

找到答案:我在项目的其他地方打开了我的数据库,我坚持我删除了它,但我没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多