gpt4 book ai didi

java - SQL问题,Java中的ResultSet

转载 作者:搜寻专家 更新时间:2023-10-31 08:21:34 24 4
gpt4 key购买 nike

如何迭代 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 tutorial :

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 Joins吗? ?第二,你不是在泄露 JDBC 资源吗?看起来您正在获取一个语句,但没有获取它的句柄以便您可以在使用后正确关闭它。请参阅之前链接的 JDBC 教程,了解如何正确使用 JDBC 代码和 this article 的基本说明。有关如何正确使用 JDBC 的几个基本启动示例。否则,当数据库资源耗尽时,您的应用程序迟早会崩溃。

关于java - SQL问题,Java中的ResultSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2545535/

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