gpt4 book ai didi

java - ResultSet 位置不正确,也许您需要调用 next

转载 作者:行者123 更新时间:2023-12-02 07:46:06 26 4
gpt4 key购买 nike

您好,我对这段代码有疑问,因为它似乎总是返回 SQL 异常。它工作了几次然后停止并返回异常。所以我不确定出了什么问题。我之前曾尝试将 vld.close() 更改为不同的位置,所以是的。谢谢

PreparedStatement vld = conn.prepareStatement("SELECT * FROM carsharing.available(?,?,?,?)");
vld.setString(1, carName);
vld.setString(2, memberUser);
vld.setTimestamp(3, new java.sql.Timestamp(startTime.getTime()));
vld.setTimestamp(4, new java.sql.Timestamp(endTime.getTime()));
System.out.println("test1");
ResultSet rset = vld.executeQuery();
System.out.println("test2");
rset.next();
int num = rset.getInt("num");
boolean valid = rset.getBoolean("aval");
vld.close();
System.out.println(num);
System.out.println(valid);

最佳答案

1) 验证 SQL

你能先验证一下SQL是否正确吗?对我来说这看起来不正确。您现在尝试执行以下 SQL:

SELECT * FROM carsharing.available(?,?,?,?)

如果你想通过给定的名称、用户和时间戳来限制结果集,SQL 应该如下所示:

SELECT * FROM carsharing WHERE carNameField=? AND memberUserField=? AND tsField1=? AND tsField2=?

您可以将字段名称替换为架构的正确列名称。

2) 结果集导航

然后,当您在执行后获得结果集时,您可以使用first()导航到第一个位置,它还会返回 boolean 值,以便您可以检查是否有可用的结果。如果您想获取更多值,则需要一个循环。

//...
ResultSet rset = vld.executeQuery();
if( rset.first()){
int num = rset.getInt("num");
boolean valid = rset.getBoolean("aval");
}
//...

关于java - ResultSet 位置不正确,也许您需要调用 next,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10830145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com