VoltDB软件包有一个名为'选民的示例设置。'我在服务器上运行它并尝试在Java中使用它。我能够使用Statement.executeQuery和" SELECT * FROM voter创建一个ResultSet;"它具有正确的列(PHONE_NUMBER,STATE和CONTESTANT_NUMBER),但没有行。当我尝试从resultSet获取任何内容时,我收到以下错误:
Exception in thread "main"
java.sql.SQLException: s1000
Caused by: java.lang.RuntimeException: VoltTableRow.advanceRow() must be called to advance to the first row before any access.
我不知道我应该如何在代码中使用VoltTableRow.advanceRow(),就像它在那里所说的那样。当我使用提供的VoltDB工作室设置(根本不依赖于我的Java代码)时,我也遇到了同样的问题(正确的列,没有行),select * from votes给了我三列没有行,所以我认为它可能不仅仅是Java代码中的错误,但相关代码包括在下面:
Statement jdbcStmt;
String jdbcSelect = "SELECT * FROM voter;";
ResultSet rs = jdbcStmt.executeQuery(jdbcSelect);
(省略了与创建此ResultSet无直接关系的代码部分。)
答案 0 :(得分:0)
在尝试检索任何数据之前,您应首先调用ResultSet#next
:
ResultSet rs = jdbcStmt.executeQuery(jdbcSelect);
if (rs.next()) {
//just an example
String foo = rs.getString(1);
}
答案 1 :(得分:0)
没关系,客户端应用程序在我设置它和我需要它的数据之间的某个时刻就破了。再次运行它可以解决问题。