2

我想知道使用 PreparedStatement.setString() 动态构建查询是否是一个好主意(可能,明智?)。

例如 :

sql代码:

SELECT * FROM table1 WHERE table1.category = ? ?

爪哇代码:

ps.setString(1,"category1");
ps.setString(2,"AND table1.category = 'category2'");

此外,是否可以执行以下操作:

ps.setString(1,"category1");
ps.setString(2," AND table1.category = ?");
ps.setString(3,"category2");

此致

4

2 回答 2

9

不幸的是,没有

PreparedStatements 仅用于值。不允许使用表名和列名(以及示例中的条件)。所以最好的方法是将它与字符串连接起来。

String others = " AND table1.category = ?";
String query = "SELECT * FROM table1 WHERE table1.category = ? " + others;

爪哇代码:

ps.setString(1,"category1");
ps.setString(2,"category2");
于 2013-01-21T11:17:20.237 回答
3

无论您放在 setString 中的什么内容都将包含在单引号 ' ' 中,并且不会被解释为查询。

于 2013-01-21T11:17:29.537 回答