0

MySQL データベースに接続するために NetBeans IDE を使用しています。ユーザーから入力値を取得し、その値を where 条件に入れる select クエリを使用したいと考えています。そして、このエラーメッセージが表示されます 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

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);て、変数に目的の値があるかどうかを確認してください。

于 2012-07-03T09:10:39.090 に答える
0

You could try to enclose the user input with single quotes.

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

The query string created will then be

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

instead of

SELECT COUNT(*) FROM blood_donation WHERE blood_group = A 

which may be the cause of your problem.

于 2012-07-03T09:09:40.510 に答える