SQLのInsertステートメントでレコードを追加するサンプル

図 SQLのInsertステートメントでレコードを追加するサンプル
このサンプルは、SQLのInsertステートメントでAccessのNwind.mdbデータベースの得意先テーブルに新規レコードを追加します。実行結果として新規登録したレコードの得意先IDを表示します。
このサンプルでは、以下のノウハウを習得することができます。
▲ OleDbConnectionのOpen(),Close()メソッドの使い方
▲ OleDbCommandのExecuteNonQuery()メソッドの使い方
▲ OleDbCommandのExecuteScalar()メソッドの使い方
▲ SQLのInsertステートメントの使い方
▲ SQLの@@Identityの使い方
サンプルのPage_Load()イベントでは、AccessのNwind.mdbデータベースの得意先テーブルに新規レコードを追加します。行7-9では、SQLのInsertステートメントを生成しています。得意先IDは、オートナンバー型のフィールドのため自動採番されます。
Insert Into Customers
(CompanyName, ContactName,
Phone)
"Values('フレンドリーソフト','葛西 秋雄','0480-99-9999')"
行10では、直前に追加したレコードのIDを取得するSQLを生成しています。
Select @@Identity
@@Identityは、直前に追加したレコードのIDを返します。このサンプルの場合、得意先IDを返します。行11-12では、OleDbConnectionのインスタンスを生成しています。引数には、Web.configから取得したConnectionStringを指定しています。行13では、OleDbCommandのインスタンスを生成しています。引数には、SQLとOleDbConnectionを指定しています。
行16では、OleDbConnectionのOpen()メソッドでAccessのNwind.mdbデータベースを開いています。行17では、OleDbCommandのExecuteNonQuery()メソッドでSQLのInsertを実行して、得意先テーブルに新規レコードを追加しています。行18では、OleDbCommandのCommandTextプロパティに追加したレコードの得意先IDを取得するSQLを設定しています。行19では、OleDbCommandのExecuteScalar()メソッドで得意先IDを取得して変数に保存します。ExecuteScalar()メソッドは、@@Identity、Cound(*)などシングルカラムの情報を取得するときに使用します。行20では、OleDbConnectionのClose()メソッドでAccessのNwind.mdbデータベースを閉じています。行21-23では、LabelのTextプロパティに新規登録した得意先レコードのIDを設定して表示しています。
6: Sub Page_Load()
7: Dim strSqlInsert As String = "Insert
Into Customers " & _
8: "(CompanyName,
ContactName, Phone) " & _
9: "Values('フレンドリーソフト','葛西 秋雄','0480-99-9999')"
10: Dim strSqlSelect As String = "Select
@@Identity"
11: Dim con As New OleDbConnection( _
12:
ConfigurationSettings.AppSettings("conStringAccNw"))
13: Dim cmd As New
OleDbCommand(strSqlInsert, con)
14: Dim intCustomerID As Integer
15:
16: con.Open()
17: cmd.ExecuteNonQuery()
18: cmd.CommandText = strSqlSelect
19: intCustomerID = cmd.ExecuteScalar()
20: con.Close()
21: lblMessage.Text = _
22: String.Format("得意先ID<b>{0}</b>を追加しました.", _
23:
intCustomerID.ToString())
24: End Sub