パラメータ化されたクエリ¶
``パラメーター化されたクエリ``は、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