2

クエリを動的に構築するには、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");

よろしくお願いします

4

2 に答える 2

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");
于 2013-01-21T11:17:20.237 に答える
3

setString内に何を入れても、一重引用符''内に収まり、クエリとして解釈されません。

于 2013-01-21T11:17:29.537 に答える