我的ResultSet
未正确定位,当我尝试执行以下代码时,您可能需要在java错误中调用next。请任何人帮助我
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);
}
答案 0 :(得分:0)
代码应该是这样的(在Java 7或更高版本中):
String docno = "[101,102,103,104]";
String[] minoutid = new String[1000];
String documentno = docno.substring(1, docno.length() - 1);
String[] split = documentno.split(",");
String sql = "select id from mytable where fid=?";
try (PreparedStatement outid = conn.prepareStatement(sql)) {
for (int i = 0; i < split.length; i++) {
int fid = Integer.parseInt(split[i]);
outid.setInt(1, fid);
try (ResultSet idResultSet = outid.executeQuery()) {
if (idResultSet.next()) {
String id = idResultSet.getString("id");
final List<Object> parameters = new ArrayList<>();
parameters.add(null);
parameters.add(id);
myfunction(parameters);
}
}
}
}
这将关闭准备好的语句和结果集。我也使用了setInt
代替setString
(可能是错误的)。但这可能会给出错误,否则一切都会起作用。如果这没有帮助,请给出错误。
答案 1 :(得分:0)
在第二个字符串中,每个字符串中都添加了一个空格。我正在使用POSTGRESQL,因此每个空格都将它作为字符串。我是否通过trim()消除了字符串的空间。现在工作正常。谢谢大家