0

EDITED - reposnse の後にさらにコードを追加しました (まだ機能していません)

変数を使用する Where 句を使用して sqlite をクエリしたいのですが、うまくいきません。

変数を設定して渡しますが、ハードコーディングされたものしか機能しません...

これは機能します:

Penut は、docName 列のレコードの 1 つです。

rs = stat.executeQuery("SELECT * FROM " + TABLE_NAME + " WHERE docName = 'Penut'");

しかし、これは機能しません:

Connection conn = DriverManager.getConnection("jdbc:sqlite:dufuss.db");
Statement stat = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
myInput ="Penut";
String sql = "SELECT * FROM " + TABLE_NAME + " WHERE docName = ?";
conn.prepareStatement(sql).setString(1, myInput);
rs = stat.executeQuery(sql);

では、変数myInputを機能させるにはどうすればよいでしょうか?

4

4 に答える 4

0

バインド変数を使用する場合は、準備済みステートメントを使用して、変数の値を明示的にバインドする必要があります。変数のプレースホルダーとして、? を使用する必要があります。変数名の代わりに。あなたのコードでは、 myInput は列名として扱われます。JDBC の QUERY WHERE 句で変数名を指定するをご覧ください。

于 2013-06-16T22:26:36.953 に答える