2017-02-11 12 views
2

準備された文を使用してデータベースから結果セットを取得するにはどうすればよいですか?私は自分のコードからどのように続行するのか分かりません。準備されたステートメントのためのクエリと変数を得ることができました。そして今、データベースから取得することにこだわっています。Javaデータベースからの結果の取得

答えて

3

パラメータとしてフィールド名を渡すことはできません。このようにデータだけを渡すことができます。条件置換Field1field1

WHERE ?=? 
-- ^

を使用すると、フィールド名から条件を構築したい場合は、SQL文字列そのものを構築する必要が

WHERE 'Field1'='field1' -- note the quotes around the values 

として、文字通り解釈されます。 %sを置換する引数にField1を渡して、たとえば、

SELECT * FROM Table1 WHERE %s=? 

を渡すことができますし、formatterのためのフォーマット文字列として使用します。

ユーザが入力できないフィールドの名前には十分注意してください。SQL文字列の一部となるものは、SQLインジェクション攻撃を避けるために、プログラムや設定ファイルの定数プールから来なければなりません。

+0

ああ、ありがとう!しかし、結果セットを表示したい場合は、渡されたフィールドからそれらをリストするにはどうすればいいですか? – newbie95

+0

@ newbie95 ['ResultSetMetaData'](http://stackoverflow.com/a/696798/335858)を使用してください。 – dasblinkenlight

+0

@dashblinkenlight申し訳ありませんが、別のクラスから、 "Select Field1、Field2 from Table Where ...."のようなクエリを渡した場合、準備されたフィールドにField1とField2(渡されたクエリに応じてフィールドの数)を入れます私は結果セットを取得するための声明? – newbie95

関連する問題