【问题标题】:Not able to proceed with ResultSet无法继续使用 ResultSet
【发布时间】: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");
    }

【问题讨论】:

  • sesee 是结果集,因此它们永远不会等于 "Available""Cleaned"。我建议您在继续之前阅读有关使用 JDBC 的教程或书籍。此外,不要将值连接到查询字符串中:这会使您的代码容易受到 SQL 注入的攻击。

标签: java mysql jdbc resultset


【解决方案1】:

从您的代码 se acd see 是获得的相应 ResultSet,我不确定 ResultSet.equals 是如何工作的,但我建议您使用以下

while(see.next())
{
String clean=see.getString("clean_status");
}
while(se.next())
{
String avail=see.getString("availability");
}

然后检查输出。

但是,如果错误仍然存​​在,请检查表中的可用性和 clean_status 的值是否有任何前导或尾随空格,这有时可能是个问题。

【讨论】:

  • see = connection.s.executeQuery(clean); while(see.next()) {clean=see.getString("clean_status"); this.clean=clean; } se = connection.s.executeQuery(avai); while(se.next()) { avail=se.getString("availability"); this.avail=avail; 这很好用。但它不适用于 ResultSet.equals。无论如何,我得到了解决方案谢谢。
猜你喜欢
  • 2013-02-09
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 2018-09-01
  • 2015-10-12
  • 2016-12-25
相关资源
最近更新 更多