如何在java中的for循环中使用next()来获取下一个结果集

时间:2014-05-30 17:26:36

标签: java prepared-statement resultset

我想获取数组常量中显示的每个no的id。请找到以下代码。当我运行这个时,我得到“ResultSet没有正确定位,也许你需要打电话给下一个。”错误。但101工作正常。其余的值或未获取。请任何人帮助我

 PreparedStatement m_inoutid = null;
 docno="[101,102,103,104]";
 String minoutid[]=new String[1000];
 String documentno = docno.substring(1, docno.length() - 1);
 List<String> docnumbers = new ArrayList<String>();
 String[] split = documentno.split(",");
 StringBuilder sb = new StringBuilder();
 for (int i = 0; i < split.length; i++) {

  String sql = "select id from mytable where fid=?";

   outid = conn.prepareStatement(sql);
   String  idfromquery=split[i];
    outid.setString(1, idfromquery);
    ResultSet idResultSet = outid.executeQuery();
    idResultSet.next();

    id = idResultSet.getString("id");

   final List<Object> parameters = new ArrayList<Object>();
   parameters.add(null);
   parameters.add(id);

   myfunction(parameters);
    }

1 个答案:

答案 0 :(得分:0)

我可以在这里看到你可能尝试的两件事:

  1. 您可以检查所有查询是否至少返回一行。也许您传递给查询的ID不会为任何结果验证WHERE子句。您可以通过将调用next置于条件语句(如

    )中来检查此问题

    if(idresultSet.next()) id = idResultSet.getString("id");

  2. 此外,您可能应该在执行查询后尝试将光标放在第一行(只是为了确定)。像

    ResultSet idResultSet = outid.executeQuery(); idResultSet.first(); idResultSet.next();