Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC Sqlite rs.next-当PreparedStatement有变量时,不要进入rs.next-loop_Java_Sqlite_Jdbc - Fatal编程技术网

Java JDBC Sqlite rs.next-当PreparedStatement有变量时,不要进入rs.next-loop

Java JDBC Sqlite rs.next-当PreparedStatement有变量时,不要进入rs.next-loop,java,sqlite,jdbc,Java,Sqlite,Jdbc,这真的把我吓坏了。在我的代码中,我将生成的uuid作为私钥移交。现在,我想从一个表中选择,其中只有一个值在avg_distance_as内。当我使用修复uuid编写语句时,一切正常。但是因为我想用我当前的uuid获取特定的行,所以我也想把它放在我的语句中 soooo没有错误-他甚至没有在rs.next循环中调用syso。这一个正在工作: public int getavgDistanceAs(String uuid) { try { Class.forName(

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

soooo没有错误-他甚至没有在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);

如果有人能帮忙,那就太棒了:

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

你的说法完全不同。第一个没有WHERE子句,因此除非表为空,否则您将得到一个包含行的结果集。您的第二个语句使用了一个参数,因此如果您没有得到结果,我会假设您正在使用数据库中不存在的UUID进行搜索。我很惊讶您的第一个示例能够正常工作,因为调用setString1。。当您没有参数占位符时,应抛出SQLException`但SQLite JDBC驱动程序可能有问题。@markrotVeel-我对SQLite-JDBC-3.8.11.2.jar的第一个PreparedStatement no WHERE子句的测试在.setString语句上给了我ArrayIndexOutOfBoundsException。第二个例子效果不错,不管问题怎么说。所述的问题是不可复制的。Sry,我把你和混合声明混淆了。要明确的是:这个on不会进入循环内部——尽管uuid存在。这是我的问题@MarkRotterveel:你是对的-它只在没有设置字符串的情况下工作。我只是想提一下。。。