使用PreparedStatement构建查询

Ben*_*ris 2 java sql prepared-statement

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

例如 :

sql代码:

SELECT * FROM table1 WHERE table1.category = ? ?
Run Code Online (Sandbox Code Playgroud)

java代码:

ps.setString(1,"category1");
ps.setString(2,"AND table1.category = 'category2'");
Run Code Online (Sandbox Code Playgroud)

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

ps.setString(1,"category1");
ps.setString(2," AND table1.category = ?");
ps.setString(3,"category2");
Run Code Online (Sandbox Code Playgroud)

最好的祝福

Joh*_*Woo 9

不幸的是,没有.

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

String others = " AND table1.category = ?";
String query = "SELECT * FROM table1 WHERE table1.category = ? " + others;
Run Code Online (Sandbox Code Playgroud)

java代码:

ps.setString(1,"category1");
ps.setString(2,"category2");
Run Code Online (Sandbox Code Playgroud)