SQL问题,java中的ResultSet
如何迭代ResultSet?我尝试使用以下代码,但出现错误java.sql.SQLException:对空结果集的非法操作。
while ( !rs.isLast()) { rs.next();
int id = rs.getInt("person_id");
SQL.getInstance().getSt().execute("INSERT ref_person_pub(person_id) VALUES(" + id + ")");
}
更新:我发现了问题。我仅使用了SQL单例中的一条语句。语句关闭后,将无法再次使用。
回答:
按照JDBC教程:
resultSet = statement.executeQuery();while (resultSet.next()) {
int id = resultSet.getInt("id");
// ...
}
将ResultSet#next()光标向前一行从当前位置,并返回移动true如果新的当前行是有效的。因此,while当没有更多行时,循环将自动停止。
如果应该返回零或一行而不是多行,则if改为使用:
resultSet = statement.executeQuery();if (resultSet.next()) {
int id = resultSet.getInt("id");
// ...
}
这样,您就有机会添加else。
更新,是说和不相关的实际问题,我看到你的代码更潜在的问题:第一,你好像火多个查询它们是互相依赖的。这可以更有效地完成。您熟悉SQL Join吗?第二,您不是在泄漏JDBC资源吗?看起来您正在获取一条语句,但没有得到它的句柄,因此您可以在使用后正确关闭它。请参考之前链接的JDBC教程,以获取有关如何正确使用JDBC代码的基本说明,以及有关如何正确使用JDBC 的几个基本启动示例的本文,请参考。否则,当数据库用尽资源时,您的应用程序可能早晚崩溃。
以上是 SQL问题,java中的ResultSet 的全部内容, 来源链接: utcz.com/qa/399673.html