mysql before start of result set,ResultSet异常 - 在结果集开始之前

I'm having trouble getting data from a ResultSet object. Here is my code:

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));

}

The error trace:

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)

What am I doing wrong here?

解决方案

Basically you are positioning the cursor before the first row and then requesting data. You need to move the cursor to the first row.

result.next();

String foundType = result.getString(1);

It is common to do this in an if statement or loop.

if(result.next()){

foundType = result.getString(1);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值