ResultSet未正确定位,可能需要在java中调用next
我得到的ResultSet未正确定位,可能需要在java中调用next,java,sql,postgresql,prepared-statement,next,Java,Sql,Postgresql,Prepared Statement,Next,我得到的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
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);
}
PreparedStatement m_inoutid=null;
docno=“[101102103104]”;
字符串minoutid[]=新字符串[1000];
字符串documentno=docno.substring(1,docno.length()-1);
List docnumbers=new ArrayList();
String[]split=documentno.split(“,”);
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
代码应该是这样的(在Java 7或更高版本中):
String docno=“[101102103104]”;
字符串[]minoutid=新字符串[1000];
字符串documentno=docno.substring(1,docno.length()-1);
String[]split=documentno.split(“,”);
String sql=“从mytable中选择id,其中fid=?”;
try(PreparedStatement outid=conn.prepareStatement(sql)){
对于(int i=0;i
这将关闭准备好的语句和结果集。我还使用了
setInt
而不是setString
(可能是错误的)。但这可能会产生错误,否则一切都会以某种方式运行。如果没有帮助,请给出错误。从第二个字符串开始,在每个字符串中添加了空格。我正在使用POSTGREYSQL,所以每个空格都将它作为字符串。因此,我通过trim()删除了字符串的空间。现在工作正常。谢谢大家包含代码是很有帮助的,但是如果显示错误消息的确切文本(包括堆栈跟踪),那就太好了。您的代码看起来也有奇怪的缩进。最后,您真的不应该在这样的循环中执行SQL—只需执行一个SELECT
,使用适当的WHERE
子句(加入VALUES
列表或临时表,…)查找所有1000个结果,谢谢您的帮助。。我发现哪里出了错1.我发现了问题所在。当我以“,”分隔字符串时,它会从第二个字符串中添加空格。我用trim()删除了那些跨距。现在工作很好。。。
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);
}
}
}
}