【问题标题】:how to take WHERE value from user in mysql如何在mysql中从用户那里获取WHERE值
【发布时间】:2012-07-03 16:35:06
【问题描述】:

我正在使用 NetBeans IDE 连接 MySQL 数据库,我想使用 select 查询从用户那里获取输入值并将该值放在 where 条件中。 我收到此错误消息 'where 子句'中的未知列'A' 当我在代码中写入值'A'时它可以工作,但是当它是来自用户的输入时它不起作用?

String dataSourceName = "testSqlDb";
String dbUrl = "jdbc:odbc:" + dataSourceName;
try {
  bloodgroup = jTextField2.getText().trim();
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  Connection con = DriverManager.getConnection(dbUrl, "", "");
  Statement s = con.createStatement();

  ResultSet rs;
  String query = "SELECT COUNT(*) FROM blood_donation WHERE blood_group="
      + bloodgroup;

  rs = s.executeQuery(query);

  while (rs.next()) {
    System.out.println("COUNT(*)=" + rs.getInt("COUNT(*)"));
  }

  s.close();
  con.close();

} catch (Exception e) {
  System.out.println(e.getMessage());
  JOptionPane.showMessageDialog(null, e.getMessage(), "erro",
      JOptionPane.ERROR_MESSAGE, null);
}

【问题讨论】:

  • 你可以使用官方的MySQL driver来代替JDBC/ODBC桥的驱动。 还要注意:您的代码容易受到 SQL 注入的影响;使用 PreparedStatement。 这里不认真,但您可以获取名称范围为 A-D 等密码“secret”的用户数。

标签: java mysql select count where


【解决方案1】:

我猜你错过了''

String query = "SELECT COUNT(*) FROM blood_donation WHERE blood_group='"+bloodgroup+"'";

【讨论】:

    【解决方案2】:

    您可以尝试用单引号将用户输入括起来。

    String query = "SELECT COUNT(*) FROM blood_donation WHERE blood_group='"+bloodgroup+"'";
    

    创建的查询字符串将是

    SELECT COUNT(*) FROM blood_donation WHERE blood_group = 'A' 
    

    而不是

    SELECT COUNT(*) FROM blood_donation WHERE blood_group = A 
    

    这可能是您的问题的原因。

    【讨论】:

      【解决方案3】:

      IF 字符串值..

      String query = "SELECT COUNT(*) FROM blood_donation 
      WHERE blood_group='"+bloodgroup+"';
      

      如果是数值..

      String query = "SELECT COUNT(*) FROM blood_donation 
      WHERE blood_group="+bloodgroup;
      

      还可以在执行查询之前尝试System.out.println("bloodgroup=" + bloodgroup); 并检查您的变量是否具有所需的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-23
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多