パラメータ化されたクエリ¶
parameterized query はSQLステートメントに埋め込まれた1つ以上のパラメーターマーカーを持つクエリです。パラメータ化されたクエリを実行する前に、SQLステートメントのテキストで見つかった各マーカーの値を指定する必要があります。
パラメータ化されたクエリは、コードの作成時にクエリの完全なテキストがわからない場合に役立ちます。たとえば、 WHERE 節で参照される値は、ユーザー入力から計算される場合があります。
次の例に示すように、 EDBParameter オブジェクトを作成し、そのオブジェクトをコマンドのパラメーターコレクションに追加することにより、パラメーター化されたクエリで指定された各パラメーターのデータ型を宣言する必要があります。次に、パラメータの Value() 関数を呼び出して、各パラメータに value を指定する必要があります。
この例では、従業員の給与を増やす UPDATE ステートメントでパラメーター化クエリを使用する方法を示しています:
<% @ Page Language="C#" Debug="true"%>
<% @Import Namespace="EnterpriseDB.EDBClient" %>
<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Configuration" %>
<script language="C#" runat="server" >
private void Page_Load(object sender, System.EventArgs e)
{
string strConnectionString = ConfigurationSettings.AppSettings
["DB_CONN_STRING"];
EDBConnection conn = new EDBConnection(strConnectionString);
string updateQuery = "UPDATE emp SET sal = sal+500 where empno = :ID";
try {
conn.Open();
EDBCommand cmdUpdate = new EDBCommand(updateQuery,conn);
cmdUpdate.Parameters.Add
(new EDBParameter(":ID", EDBTypes.EDBDbType.Integer));
cmdUpdate.Parameters[0].Value = 7788;
cmdUpdate.ExecuteNonQuery();
Response.Write("Record Updated");
}
catch(Exception exp) {
Response.Write(exp.ToString());
}
finally {
conn.Close();
}
}
</script>
次の名前のWebルートディレクトリのファイルにサンプルコードを保存します。
updateSalary.aspx
サンプルコードを呼び出すには、Webブラウザーを開き、以下を参照します。
http://localhost/updateSalary.aspx