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

回到顶部