2
準備された文を使用してデータベースから結果セットを取得するにはどうすればよいですか?私は自分のコードからどのように続行するのか分かりません。準備されたステートメントのためのクエリと変数を得ることができました。そして今、データベースから取得することにこだわっています。Javaデータベースからの結果の取得
準備された文を使用してデータベースから結果セットを取得するにはどうすればよいですか?私は自分のコードからどのように続行するのか分かりません。準備されたステートメントのためのクエリと変数を得ることができました。そして今、データベースから取得することにこだわっています。Javaデータベースからの結果の取得
パラメータとしてフィールド名を渡すことはできません。このようにデータだけを渡すことができます。条件置換Field1
とfield1
と
WHERE ?=?
-- ^
を使用すると、フィールド名から条件を構築したい場合は、SQL文字列そのものを構築する必要が
WHERE 'Field1'='field1' -- note the quotes around the values
として、文字通り解釈されます。 %s
を置換する引数にField1
を渡して、たとえば、
SELECT * FROM Table1 WHERE %s=?
を渡すことができますし、formatterのためのフォーマット文字列として使用します。
ユーザが入力できないフィールドの名前には十分注意してください。SQL文字列の一部となるものは、SQLインジェクション攻撃を避けるために、プログラムや設定ファイルの定数プールから来なければなりません。
ああ、ありがとう!しかし、結果セットを表示したい場合は、渡されたフィールドからそれらをリストするにはどうすればいいですか? – newbie95
@ newbie95 ['ResultSetMetaData'](http://stackoverflow.com/a/696798/335858)を使用してください。 – dasblinkenlight
@dashblinkenlight申し訳ありませんが、別のクラスから、 "Select Field1、Field2 from Table Where ...."のようなクエリを渡した場合、準備されたフィールドにField1とField2(渡されたクエリに応じてフィールドの数)を入れます私は結果セットを取得するための声明? – newbie95