MENU

SQLの値を書き換える

はじめに 

一つ前の章で (SQLの実行)で、SQL文を実行するのに、 statementインタフェースを使用しました。 
PreparedStatementインタフェースは、 statementインタフェースと比べて、JDBC接続の性能向上を図ることができます。 
この章では、PreparedStatementインタフェースの使い方を学んで行きましょう。 

Step1: PreparedStatement l 

例えば会員登録ページをイメージしてみてください。 

任意の入力値がDBに送られます。 
その入力値によって登録時に使用するSQL文 (WHERE句で使用する条件値など) を書き換えたい… 
そんな時に便利なのが PreparedStatementインタフェースと呼ばれるものです。 
PreparedStatementインタフェースは、何回もSQL文を生成しなくても済むように改良されたクラスです。 

例えば、 insert文で3レコード挿入する場合は、3回ループしてinsert文を生成し、executeUpdate()メソッドで実行する方法が考えられます。 
PreparedStatementインタフェースでは、そのようなかたちではなくなります。 Step2で具体的に説明していきます。

Step2: PreparedStatementの使い方 

例題 

PreparedStatementインタフェースは、 prepareStatement() メソッドにSQL文の引数を指定して生成します。 
引数に指定するのはプリコンパイル (実行したいSQL文の値を?に置き換えること)するSQL文で、上記の例ではINSERT INTO テーブル名 (列名,列名,…) VALUES (?, ?,..) のSQL文が渡されています。 

ここで?と指定されている部分が可変の部分で、後に setXXXX() メソッドで値を指定します。 
設定する値が、文字列の場合などは、 setString() メソッド、整数の場合は setInt() メソッド、setLong() メソッド、 日付の場合には setDate() メソッドを使用します。 

また、setXXXX()メソッドの第1引数は、 何番目の 「?」 に対応するもので、先頭から順に1から番号が割り振られ指定します。 第2引数には値を指定します。 

最後に、executeUpdate() メソッドで実行しますが、引数は要らないので注意してください。 
select文の場合には、 executeQuery() メソッドで対応します。 

目次