【发布时间】:2022-01-16 11:25:51
【问题描述】:
我有 MySQL 数据库,其列名为 roomno、availability、clean_status、price 和 room_type。列可用性的数据为“可用”或“不可用”,而 clean_status 列的数据为“脏”或“已清理”。我正在尝试从数据库中获取数据,如果所选房间“不可用”或“脏”,我想显示错误消息,说明“在添加客户之前房间应该可用或已清理”。我已经使用了 ResultSet 并执行了这项工作。早些时候它显示了错误消息。我修改了代码并使其可执行,但它没有给出任何错误消息,数据库列中的数据也没有改变。我认为这是因为 ResultSet。任何人都可以帮助我吗?
try {
connection = new MySQLConnection();
} catch (Exception ae) {
if (ae != null) {
JOptionPane.showMessageDialog(null, "Error Connection To Database");
}
}
String avai ="select availability from rooms where roomno='"+roomno+"'";
String clean ="select clean_status from rooms where roomno='"+roomno+"'";
try {
this.see = connection.s.executeQuery(clean);
}
catch (SQLException ex) {
ex.printStackTrace();
}
try {
this.conn = new MySQLConnection();
this.se = connection.s.executeQuery(avai);
} catch (SQLException ex) {
ex.printStackTrace();
}
if (se.equals("Available") && see.equals("Cleaned")){
String str = "insert into customer values('" +id + "','" +mobileno +"','" +name +"','" +gender+"','"+country+"','" +roomno+"','"+checkedin+"','" +deposit+"')";
try {
connection.s.executeUpdate(str);
JOptionPane.showMessageDialog(null, "Data Added To Database");
}
catch (Exception eu) {
eu.printStackTrace();
JOptionPane.showMessageDialog(this, "Error In Database Table", "Message", JOptionPane.ERROR_MESSAGE);
}
}
else if (se.equals("Not Available") || see.equals("Dirty")){
JOptionPane.showMessageDialog(null,"Room Is Dirty or Not Available");
}
【问题讨论】:
-
se和see是结果集,因此它们永远不会等于"Available"或"Cleaned"。我建议您在继续之前阅读有关使用 JDBC 的教程或书籍。此外,不要将值连接到查询字符串中:这会使您的代码容易受到 SQL 注入的攻击。