不能在JDBC PreparedStatement中使用LIKE查询?

不能在JDBC PreparedStatement中使用LIKE查询?,第1张

不能在JDBC PreparedStatement中使用LIKE查询?

首先,

PreparedStatement
占位符(那些占位符
?
)仅用于 列值
,而不用于表名,列名,SQL函数/子句等。最好
String#format()
改用。其次,你应该
引用占位符一样
'?'
,它只会malform最终的查询。的
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教程:使用准备好的语句
  • 格式字符串语法


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5130428.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存