使用PreparedStatement构建查询

时间:2013-01-21 11:15:34

标签: java sql prepared-statement

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

例如:

sql代码:

SELECT * FROM table1 WHERE table1.category = ? ?

java代码:

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");

祝你好运

2 个答案:

答案 0 :(得分:9)

不幸的是,

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

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

java代码:

ps.setString(1,"category1");
ps.setString(2,"category2");

答案 1 :(得分:3)

无论你在setString中放置什么都将在单引号''内,并且不会被解释为查询。