【问题标题】:JDBC Sqlite rs.next - don't go in rs.next-loop when PreparedStatement has a variableJDBC Sqlite rs.next - 当 PreparedStatement 有变量时不要进入 rs.next-loop
【发布时间】:2016-03-18 10:03:35
【问题描述】:

真的把我吓坏了。在我的代码中,我交出一个生成的 uuid 作为我的私钥。现在我想从一个只有一个值的表中进行选择(avg_distance_as)。当我使用修复 uuid 编写语句时,一切正常。但是因为我想用我当前的 uuid 获取特定的行,所以我也想把它放在我的语句中。

soooo no error nothing - 他甚至没有在 rs.next 循环中调用 syso。这个正在工作:

    public int getavgDistanceAs(String uuid) {

    try {
        Class.forName("org.sqlite.JDBC");
        con = DriverManager.getConnection("jdbc:sqlite:test.db");


        statement = con.prepareStatement("Select avg_distance_as, UUID from avg_distance");
        System.out.println(uuid);
        statement.setString(1, uuid);

        ResultSet rs = statement.executeQuery();

        while (rs.next()) {
            System.out.println(rs.getDouble(1));
            System.out.println("test");
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            statement.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return 0;
}

但这个不是,它看起来非常相似:

statement = con.prepareStatement("Select avg_distance_as, UUID from avg_distance where UUID = ?");
statement.setString(1, uuid);

如果有人能帮忙就太好了:)

【问题讨论】:

  • 你的说法完全不同。第一个没有WHERE 子句,所以除非表是空的,否则你会得到一个带有行的ResultSet。您的第二条语句带有一个参数,因此如果您没有得到结果,我会假设您正在使用数据库中不存在的 UUID 进行搜索。
  • 我很惊讶您的第一个示例有效,因为调用 setString(1, ..) when you don't have a parameter placeholder should throw an SQLException`(虽然可能是 SQLite JDBC 驱动程序的问题)。
  • @MarkRotteveel - 我使用 sqlite-jdbc-3.8.11.2.jar 对第一个 PreparedStatement(无 WHERE 子句)的测试在 .setString 语句上给了我一个 ArrayIndexOutOfBoundsException。尽管问题说了什么,第二个例子工作正常。所述问题不可重现。
  • 对不起,我把你的说法搞混了。为了清楚起见:pastebin.com/UKzc7NJa# this on 不会进入循环内部 - 尽管存在 uuid。那是我的问题。 @MarkRotteveel:你是对的 - 它只有在没有“setString”的情况下才能工作。我只是想提一下……

标签: java sqlite jdbc


【解决方案1】:

好的 - 明白了...我在计算中弄乱了我的顺序。 @Kayaman 是对的:uuid 在需要的时候丢失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 2019-01-16
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多