当前位置: 首页 > 面试题库 >

SQL问题,java中的ResultSet

百里光熙
2023-03-14
问题内容

如何迭代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 的几个基本启动示例的本文,请参考。否则,当数据库用尽资源时,您的应用程序可能早晚崩溃。



 类似资料:
  • 我有个商品表里面有30多万的数据,商品标题是中文,系统模糊查询的时候老是会显示慢,同时我在这个字段创建了一个普通索引;但是查询还是会慢?请教高手要如何进行优化? select * from goods_name where title_name like "%电器%"

  • 问题内容: 我有以下几行代码。 这是一个奇怪的问题。如果我从路径中没有空格(文件夹名称)的路径运行它,则它运行良好。但是,如果路径包含任何空格(“ c:\ New Foler …”行),则该路径不起作用。 如何解决呢? 编辑:更详细-我检查了sysloader对象。 sysloader-> UCP->路径 正在使用字符%20而不是空格的路径 因此,所有URL均为空。 如何解决呢? 问题答案: Su

  • 问题内容: 我有下表: 我要插入数据,如下所示: 但是,当我检索数据时,它们类似于。 有什么问题,我该如何解决? 问题答案: 根据MySQL JDBC驱动程序文档,您还需要在JDBC连接URL中设置字符编码。这是一个例子: 否则,MySQL JDBC驱动程序将使用平台默认编码在通过网络发送之前将字符转换为字节,在您的情况下显然不是UTF-8。然后,所有未发现的字符将被问号替换。 另外,在检索数据时

  • 问题内容: 我正在使用org.apache.commons.net.ftp.FTPClient,看到的行为令人困惑。 下面的方法打算浏览一个FTPFile列表,读入它们,然后对内容进行一些处理。都可以了 (真正)不起作用的是FTPClient对象执行以下操作… 有没有人看到这样的东西?我是FTPClient的新手,我在做错什么吗? 问题答案: 根据该API ,该方法返回时,它无法打开数据连接,在这

  • 这是我的方法: 这是我的测试主测试: db对象工作,打开连接工作,我的find all records方法工作,然后我的deleteOneRecord崩溃。我收到以下错误: 线程“main”中的异常com.mysql.jdbc.exceptions.jdbc4. MySQLSyntaErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以在第1行的“作者”附

  • 我有一些关于在 Java 中播放声音的问题,希望你能帮助我。 1. 如何使用“停止”按钮停止播放声音? 2. 如何减慢声音(或冷却时间)? 3.我想创建一个选项框架,我可以在其中调节音量并具有静音选项,我该怎么做? 这是我的代码: 任何帮助都将不胜感激,并祝你有美好的一天!