将变量而不是参数索引与 JDBC 预准备语句结合使用
在许多编程语言中,预准备语句可以采用这样的方法:
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方式执行此操作)。
问候, 凯