Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Tidak dapat menggunakan kueri LIKE di JDBC PreparedStatement?

Pertama, PreparedStatement placeholder (? hal) adalah untuk nilai kolom saja, bukan untuk nama tabel, nama kolom, fungsi/klausa SQL, dan sebagainya. Lebih baik gunakan String#format() sebagai gantinya. Kedua, Anda seharusnya tidak kutip placeholder seperti '?' , itu hanya akan merusak kueri akhir. PreparedStatement setter sudah melakukan pekerjaan mengutip (dan melarikan diri) untuk Anda.

Inilah SQL yang diperbaiki:

private static final String SQL = "select instance_id, %s from eam_measurement"
    + " where resource_id in (select RESOURCE_ID from eam_res_grp_res_map where"
    + " resource_group_id = ?) and DSN like ? order by 2");

Berikut cara menggunakannya:

String sql = String.format(SQL, "SUBSTR(DSN,27,16)"); // This replaces the %s.
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, defaultWasGroup);
preparedStatement.setString(2, "%Module=jvmRuntimeModule:freeMemory%");

Lihat juga :

  • Tutorial Sun JDBC:Menggunakan Pernyataan yang Disiapkan
  • Format sintaks string


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemicu pencegahan

  2. Bagaimana cara mengembalikan beberapa baris dari prosedur tersimpan? (Oracle PL/SQL)

  3. Pengembang SQL 4

  4. Loop Bersarang Bergabung di Oracle 11g

  5. Bagaimana cara menampilkan ukuran skema Oracle dengan kueri SQL?