java - if else 之后 rs.next() 出错?

标签 java mysql jsp

这是我的问题: 我的问题是我有 dc作为一个变量,如果这个变量为空,那么应该执行 else 部分。 但这里的条件是,当执行 if() 部分时,它不会进入 if(rs.next()) ?为什么 ? 当我的dc值为2时,rs.next()正在工作,但当它是 1 时,它不工作。

    if (dc != null) {
        rs = st.executeQuery("select e.env_id,s.* from env_mast e inner join"
                + " db_server_mast s on e.dc_id=s.dc_id join cust_mast c on "
                + "e.cust_id=c.cust_id where cust_name='" + env + "' and "
                + "e.dc_id='" + dc + "' ");
    } else {

        System.out.println("Not DC");
        rs = st.executeQuery("select e.env_id,s.* from env_mast e inner join "
                + "db_server_mast s on e.dc_id=s.dc_id join cust_mast c on "
                + "e.cust_id=c.cust_id where cust_name='" + env + "' ");

    }
    if (rs.next()) {
    }

最佳答案

我真的建议您使用 PreapredStatement 并绑定(bind)参数(否则您的代码容易受到 SQL 注入(inject)攻击),此外我将从构建查询开始。所以,类似 -

String sql = "select e.env_id,s.* from env_mast e inner join "
            + "db_server_mast s on e.dc_id=s.dc_id join cust_mast c on "
            + "e.cust_id=c.cust_id where cust_name=?"
            + ((dc != null) ? " and e.dc_id=?" : "");
try (PreparedStatement ps = conn.prepareStatement(sql);) {
  ps.setString(1, env);
  if (dc != null) {
    ps.setString(2, dc);
  }
  try (ResultSet rs = ps.executeQuery();) {
    while (rs.next()) {
    }
  } catch (Exception e) {
    e.printStackTrace();
  }
} catch (Exception e) {
  e.printStackTrace();
}

关于java - if else 之后 rs.next() 出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615583/

相关文章:

java - 如何在 Struts2 中为选择(选择事件)提供单独的操作(在自动完成文本框中使用)

jsp - 在 tomcat 上运行 Web 应用程序

java - 如何诊断 MySQL JDBC 驱动程序的 ClassNotFound 异常

java - 提取特定行java

java - Spark 使用不可变类和 java (+ lombok) 时出现反序列化错误

mysql - 为多个查询保持 MYSQL 连接功能

Java 从包含句子的文本文件中提取单词或(搜索字符)的最佳方法

mysql - mysql增量SQL转储

php - 如何使这个专栏-1?

java - JSTL 无法解决错误