如何解决SQLException: 查询不返回结果
我正在用 Java Swing 做一个项目,并使用 sqlite 作为我的数据库。 这是我为从数据库的 Room 表中删除记录而编写的函数。
public void Delete() {
String room_code = jTextField5.getText();
String sql = "DELETE FROM Room WHERE room_code = '" + room_code + "'";
try {
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
if (rs.next()) {
JOptionPane.showMessageDialog(null,"Room Deleted Successfully");
}
else {
JOptionPane.showMessageDialog(null,"Invalid Room Code");
}
}
catch (Exception ex) {
JOptionPane.showMessageDialog(null,ex);
}
}
但是,我遇到了以下异常:sqlException:查询没有返回结果。 我曾尝试按照其他答案中的建议使用 pst.executeUpdate(),但它说“int 无法转换为结果集”。
解决方法
DELETE
语句不返回结果集。您应该调用方法 executeUpdate 而不是方法 executeQuery
。
此外,您可以使用带有 PreparedStatement 的占位符。
你也应该使用 try-with-resources
考虑以下代码。
public void Delete() {
String room_code = jTextField5.getText();
String sql = "DELETE FROM Room WHERE room_code = ?";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(room_code);
int count = ps.executeUpdate();
if (count > 0) {
JOptionPane.showMessageDialog(null,"Room Deleted Successfully");
}
else {
JOptionPane.showMessageDialog(null,"Invalid Room Code");
}
}
catch (Exception ex) {
JOptionPane.showMessageDialog(null,ex);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。