如何在mysql中从用户获取WHERE值

时间:2012-07-03 09:01:13

标签: java mysql select count where

我正在使用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);
}

3 个答案:

答案 0 :(得分:1)

我猜你错过了''

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

答案 1 :(得分:1)

IF String values ..

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);并检查您的变量是否具有所需的值。

答案 2 :(得分:0)

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

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 

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