【问题标题】:string parameter and SELECT prepared statement for sql in javajava中sql的字符串参数和SELECT准备语句
【发布时间】:2017-01-29 08:28:09
【问题描述】:

我有问题>>

编程语言:java 数据库:Mysql数据库

我编写了一个java代码,根据方法中的数据参数从数据库中检索记录>>

代码是:

public static void Get_patient_data(String Hospital1_ID,String Hospital2_ID {       
   try {
      Connection con = getConnection2();
      PreparedStatement statement = (com.mysql.jdbc.PreparedStatement)
         con.prepareStatement(
            "SELECT PatientGender "+
            "FROM patientcorepopulatedtable "+
               "WHERE PatientID = Hospital1_ID LIMIT 1" );
      ResultSet result = statement.executeQuery();
      ArrayList<String> array = new ArrayList<String>();
      while( result.next()) {
         System.out.print("the patient Gender is"  +
            result.getString("PatientGender"));
      }
   }
   catch(Exception e) {
      System.out.println("Error"+e);
   }
}

如您所见,问题是 Hospital1_ID 参数 .. 来自该方法,而 patientID 是表 patientcorepopulatedtable 中的一列 ...

= 相等运算符不起作用。

【问题讨论】:

  • 如果Hospital1_ID是参数,你需要把它放在撇号"WHERE PatientID =" + Hospital1_ID + " LIMIT 1"之外

标签: java sql prepared-statement


【解决方案1】:

试试这个

String query =
   "SELECT PatientGender FROM patientcorepopulatedtable "+
      " WHERE PatientID = ? LIMIT ?";
      PreparedStatement preparedStmt = conn.prepareStatement(query);
      preparedStmt.setString   (1, Hospital1_ID);
      preparedStmt.setInt   (2, 1);
      preparedStmt.executeQuery();

【讨论】:

    【解决方案2】:

    你可以这样做

    PreparedStatement statement = (com.mysql.jdbc.PreparedStatement)
       con.prepareStatement(
          "SELECT PatientGender FROM patientcorepopulatedtable "+
             "WHERE PatientID = ? LIMIT 1");
    statement.setString(1, Hospital1_ID);
    ResultSet result = statement.executeQuery();
    

    你可以找到更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-09
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多