【发布时间】:2010-11-09 00:44:28
【问题描述】:
在许多编程语言中,对于准备好的语句来说,类似这样的事情是可能的:
PreparedStatement statement = connection.prepareStatement(
"SELECT id FROM Company WHERE name LIKE ${name}");
statement.setString("name", "IBM");
但不适用于 java.sql.PreparedStatement。在 Java 中必须使用参数索引:
PreparedStatement statement = connection.prepareStatement(
"SELECT id FROM Company WHERE name LIKE ?");
statement.setString(1, "IBM");
是否有像第一个示例中那样使用字符串变量的解决方案? “${.*}” 没有在 SQL 语言的其他地方使用,还是有任何冲突?因为然后我会自己实现它(解析 SQL 字符串并用“?”替换每个变量,然后以 Java 方式执行)。
问候, 启
【问题讨论】:
-
嘿 kd304,我想知道你为什么不留下你的消息作为答案而不是使用评论。因为我认为这是我解决这个问题的方法。
-
@tokel:我不确定你的问题是否是理论上的,我的评论并没有真正回答你输入的问题。
-
尽管...谢谢 :-)
-
“在 Java 中必须使用参数索引:” - 实际上,在您的示例中看起来并不像这样。在 Java 中,甚至不能在 SQL 字符串中使用参数索引。