Първо, 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:Използване на подготвени изявления
- Синтаксис на форматиране на низ