Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Nie możesz użyć zapytania LIKE w PreparedStatement JDBC?

Najpierw PreparedStatement symbole zastępcze (te ? rzeczy) dotyczą wartości kolumn nie dotyczy tylko nazw tabel, nazw kolumn, funkcji/klauzul SQL itp. Lepiej użyj String#format() zamiast. Po drugie, nie zacytuj symbole zastępcze, takie jak '?' , zniekształciłoby to tylko końcowe zapytanie. PreparedStatement setery już wykonują za Ciebie cytowanie (i ucieczkę).

Oto poprawiony SQL:

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");

Oto jak z niego korzystać:

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%");

Zobacz też :

  • Samouczek Sun JDBC:Korzystanie z przygotowanych instrukcji
  • Formatuj składnię ciągu znaków


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Baza danych menedżera pakietów RPM GI 19c

  2. Podłączanie Oracle do PostgreSQL

  3. Data Oracle Między zapytaniem

  4. Konwertuj datę ciągu na datę i godzinę w Oracle

  5. Jak wyświetlić komentarze kolumny z operacją desc