我想知道使用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");


最好的祝福

最佳答案

抱歉不行。

PreparedStatement严格仅用于值。不允许使用表名和列名(以及示例中的条件)。因此,最好的方法是将其与字符串连接。

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


Java代码:

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

08-18 08:44