Oracle
 sql >> база данни >  >> RDS >> Oracle

Не можете да използвате заявка LIKE в JDBC PreparedStatement?

Първо, PreparedStatement заместители (тези ? неща) са за стойности на колони само, не за имена на таблици, имена на колони, SQL функции/клаузи и т.н. По-добре използвайте String#format() вместо. Второ, не бива дане цитирайте заместителите като '?' , това само би деформирало крайната заявка. PreparedStatement сетерите вече вършат цитирането (и избягването) вместо вас.

Ето фиксирания 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");

Ето как да го използвате:

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

Вижте също :

  • Урок за Sun JDBC:Използване на подготвени изявления
  • Синтаксис на форматиране на низ


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membership.ValidateUser винаги връща false след надстройка до VS 2010 / .NET 4.0

  2. Мога ли да съхранявам двоичен низ в колона CLOB

  3. Процедурата на Oracle не връща резултати при изпълнение от задача на скрипт на SSIS

  4. изтрийте дублиращи се редове от Oracle

  5. Как да създадете VARRAY като обект на база данни в базата данни на Oracle