0

我正在使用 NetBeans IDE 连接 MySQL 数据库,我想使用选择查询从用户那里获取输入值并将该值放在 where 条件中。并且我收到此错误消息 Unknown column 'A' in 'where Clause' 当我在代码中写入值'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);
}
4

3 回答 3

1

我猜你错过了''

String query = "SELECT COUNT(*) FROM blood_donation WHERE blood_group='"+bloodgroup+"'";
于 2012-07-03T09:03:18.623 回答
1

如果字符串值..

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

于 2012-07-03T09:10:39.090 回答
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 

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

于 2012-07-03T09:09:40.510 回答