SQLのUpdateにパラメータを指定してレコードを更新するサンプル

図 SQLのUpdateにパラメータを指定してレコードを更新するサンプル
このサンプルは、SQLのUpdateステートメントにパラメータ(?)を指定して、AccessのNwind.mdbデータベースの得意先テーブルを更新しています。実行結果として更新したレコード件数を表示します。
このサンプルでは、以下のノウハウを習得することができます。
▲ SQLのUpdateステートメントにパラメータ(Positional Parameter)を指定する方法
▲ パラメータ(Positional Parameter)に値を設定する方法
サンプルのPage_Load()イベントでは、AccessのNwind.mdbデータベースの得意先テーブルを更新しています。行7-8では、SQLのUpdateステートメントを生成しています。SetとWhere句には、パラメータとして?を指定しています。
Update Customers
Set Phone=? Where CompanyName=?
ここで指定したパラメータの値は、ParametersコレクションのAdd()/Valueで設定します。パラメータに値を設定するときは、Updateステートメントに記述した順番(Phone è CompanyName)に行います。
行13-14では、Phoneのパラメータ値を設定しています。行13では、OleDbCommandのParametersコレクションのAdd()メソッドでパラメータ変数@Phoneを追加しています。引数には、パラメータ変数、データ型、サイズを指定します。行14では、パラメータ変数@Phoneに値を設定しています。行15-16では、パラメータ変数@CompanyNameを追加して値を設定しています。行18-20では、AccessのNwnd.mdbデータベースを開いてOleDbCommandのExecuteNonQuery()メソッドでUpdateステートメントを実行してデータベースを閉じています。行21-23では、LabelのTextプロパティに更新されたレコード件数を設定して表示します。
6: Sub Page_Load()
7: Dim strSqlUpdate As String = "Update
Customers " & _
8: "Set Phone=? Where
CompanyName=?"
9: Dim con As New OleDbConnection( _
10:
ConfigurationSettings.AppSettings("conStringAccNw"))
11: Dim cmd As New
OleDbCommand(strSqlUpdate, con)
12:
13:
cmd.Parameters.Add("@Phone", OleDbType.VarWchar, 24)
14:
cmd.Parameters("@Phone").Value = "0480-88-8888"
15:
cmd.Parameters.Add("@CompanyName", OleDbType.VarWchar, 40)
16:
cmd.Parameters("@CompanyName").Value = "フレンドリーソフト"
17:
18: con.Open()
19: Dim intUpdateCount As Integer =
cmd.ExecuteNonQuery()
20: con.Close()
21: lblMessage.Text = _
22:
String.Format("<b>{0}</b>件の得意先を更新しました.", _
23:
intUpdateCount.ToString())
24: End Sub