这让我很生气,因为我无法理解它。我正在执行以下代码:
nameString = jcbClientList.getItemAt(jcbClientList.getSelectedIndex());
System.out.println(" Name String = " + nameString );
sql = "SELECT * FROM clients WHERE Name = \'" + nameString + "\'";
System.out.println(sql);
try {
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
while( rs.next()) {
clientID = rs.getInt(1);
}
}
catch(SQLException se) {
msg = "Problem getting client ID from DB \n" + se.getLocalizedMessage();
System.out.println(msg);
JOptionPane.showMessageDialog(null, msg);
}
构建的SQL字符串是正确的。我已经通过获取字符串的System.out.println(sql)
输出并将其粘贴到其他代码中来检查这一点,它完美地工作。但是,在这种情况下,我得到一个例外:
无效的游标状态 - 没有当前行。
即使我将sql更改为'SELECT * FROM clients',它应该返回20行并且在应用程序的其他地方执行,它仍然会给出相同的错误。正在寻址的数据库是嵌入式Derby DB。
答案 0 :(得分:0)
我似乎记得遇到过没有正确实现“#34; ResultSet游标最初位于第一行"之前。我首先进行了first()(或beforeFirst())调用,然后才开始调用next()。