我有以下代码来查询数据库!但是 while 循环内的代码没有被执行!没有消息框,只是不被执行!谁能帮我!结果集不为空!当我从 try catch block 中打印相同的值时,它会被执行并打印正确的值! DB连接是标准的MySQL DB连接类!
database = new DBConnection();
String dept = txtSearch.getText();
String Query = "SELECT * FROM department where dept_name= '" + dept + "'";
ResultSet set = database.queryDatabase(Query);
try {
if (set.next() == false) {
JOptionPane.showMessageDialog(null, "No Matchs found for the search query! Try Again.", "Search Error", JOptionPane.ERROR_MESSAGE);
} else {
while (set.next()) {
System.out.print(set.getString("dept_name"));
txtName.setText(set.getString("dept_name"));
txtDes.setText(set.getString("dept_desc"));
}
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), ex.getCause().toString(), JOptionPane.ERROR_MESSAGE);
}
最佳答案
通过调用 set.next()
,您将丢弃查询的第一行,然后忽略此处该行中的数据:
if (set.next() == false) { // ***** here on this line
JOptionPane.showMessageDialog(null, "No Matchs found for the search query!
Try Again.", "Search Error", JOptionPane.ERROR_MESSAGE);
} else {
while (set.next()) {
System.out.print(set.getString("dept_name"));
txtName.setText(set.getString("dept_name"));
txtDes.setText(set.getString("dept_desc"));
}
}
相反,请确保每次调用 next()
并返回 true 时都从 ResultSet 中提取信息。
你可以这样做:
int setCount = 0;
while (set.next()) {
setCount++;
System.out.print(set.getString("dept_name"));
txtName.setText(set.getString("dept_name"));
txtDes.setText(set.getString("dept_desc"));
}
if (setCount == 0) {
// show a warning to the user that the result set was empty
}
关于java - 结果集代码没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259450/