为了账号安全,请及时绑定邮箱和手机立即绑定

结果集异常-在结果集开始之前

结果集异常-在结果集开始之前

月关宝盒 2019-06-12 16:49:18
结果集异常-在结果集开始之前我很难从ResultSet对象。这是我的代码:    String sql = "SELECT type FROM node WHERE nid = ?";     PreparedStatement prep = conn.prepareStatement(sql);     int meetNID = Integer.parseInt(node.get(BoutField.field_meet_nid));     prep.setInt(1, meetNID);     ResultSet result = prep.executeQuery();     result.beforeFirst();     String foundType = result.getString(1);     if (! foundType.equals("meet")) {         throw new IllegalArgumentException(String.format("Node %d must be of type 'meet', but was %s", meetNID, foundType));     }错误跟踪:Exception in thread "main" java.sql.SQLException: Before start of result set     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1072)     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:986)     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:981)     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)     at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841)     at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5656)     at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5576)     at nth.cumf3.nodeImport.Validator.validate(Validator.java:43)     at nth.cumf3.nodeImport.Main.main(Main.java:38)我在这里做错什么了?
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

基本上,您是在第一行之前定位光标,然后请求数据。您需要将光标移动到第一行。

 result.next();
 String foundType = result.getString(1);

在if语句或循环中这样做是很常见的。

if(result.next()){
   foundType = result.getString(1);}


查看完整回答
反对 回复 2019-06-12
?
森栏

TA贡献1810条经验 获得超5个赞

每个答案都使用.next()或使用.preveFirst(),然后使用.next()。但为什么不是这样:

result.first();

因此,您只需将指针设置为第一个记录,然后从那里开始。它可以从java1.2开始使用,我只想对任何存在一个特定记录的ResultSet的人提及这一点。


查看完整回答
反对 回复 2019-06-12
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

在访问结果之前,必须先执行结果.这是一个很常见的成语

ResultSet rs = stmt.executeQuery();while (rs.next()){
   int foo = rs.getInt(1);
   ...}


查看完整回答
反对 回复 2019-06-12
  • 3 回答
  • 0 关注
  • 852 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信