sql >> Database teknologi >  >> RDS >> Oracle

Kan du ikke bruge en LIKE-forespørgsel i en JDBC PreparedStatement?

Først PreparedStatement pladsholdere (disse ? ting) er for kolonneværdier kun, ikke for tabelnavne, kolonnenavne, SQL-funktioner/klausuler osv. Brug bedre String#format() i stedet. For det andet bør du ikke citer pladsholdere som '?' , ville det kun misforme den endelige forespørgsel. PreparedStatement sættere gør allerede opgaven med at citere (og undslippe) for dig.

Her er den faste 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");

Sådan bruger du det:

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

Se også :

  • Sun JDBC tutorial:Brug af forberedte erklæringer
  • Formatér strengsyntaks


  1. Hvordan laver man en masseindsættelse i MySQL?

  2. Sådan får du sidste række pr. gruppe i PostgreSQL

  3. konverter datostreng til mysql datetime-felt

  4. Oprettelse af timer i Oracle Forms / Forms 6i og visning af et ur