● SqlDataAdapterのUpdate()メソッドを使用してDataTableをデータベースに反映するサンプル(SQLコマンド手動作成)

図 Update()メソッドでデータベースに反映するサンプル(SQLコマンド手動作成)
このサンプルは、DataTable上で変更されたレコードをSqlDataAdapterのUpdate()メソッドを使用してデータベースに反映します。Update()メソッドが使用するSQLのInsert, Update, Deleteステートメントは、手動で作成しています。
このサンプルでは、次のような処理を行っています。
・ NwindSQLデータベースに得意先テーブル(tblCustomersUpdate)作成
・ 得意先テーブルにテストデータ作成
・ 得意先テーブルをDataTableに取り込む
・ DataTableのレコード編集(レコードの追加、編集、削除を含む)
・ Update()メソッドでDataTableを得意先テーブルに反映
SqlDataAdapterのUpdate()メソッドでDataTableを得意先テーブルに反映するときに使用するSQL(Insert/Update/Delte)は、プログラム側で用意したものを使用します。
このサンプルでは、以下のノウハウを習得することができます。
▲ SQL Serverのデータベースからテーブルを削除する方法 (Drop Table)
▲ SQL Serverのデータベースにテーブルを作成する方法 (Create Table)
▲ テーブルのフィールド(カラム)にデフォルト値を設定する方法 (Default 0)
▲ Insertのストアドプロシージャを作成する方法
▲ Updateのストアドプロシージャを作成する方法
▲ Deleteのストアドプロシージャを作成する方法
▲ DataTableを生成する方法
▲ DataTableのDataColumnにデフォルト値を設定する方法 (DefaultValue = 0)
▲ DataTableのレコードを処理(追加、編集、削除、抽出)する方法
▲ SqlParametersコレクションのAdd()メソッドの使い方
▲ SqlParameterのSourceVersionプロパティの使い方
▲ DataRowVersionのCurrent、Originalの使い方
データベースからテーブルを削除するSQL:
Drop Table tblCustomersUpdate
データベースにテーブルを作成するSQL:
Create Table
tblCustomersUpdate
(CustomerID int Not
Null Primary Key,
CompanyName
nvarchar(40) Not Null,
ContactName
nvarchar(30) Not Null,
Phone nvarchar(24) Not Null,
ConcurrencyID int Default 0)
レコードを追加するストアドプロシージャInsertCommand:
Create Procedure
spCustomersUpdateTestInsert
(@CustomerID int,
@CompanyName nvarchar(40),
@ContactName
nvarchar(30),
@Phone nvarchar(24))
As
Insert Into tblCustomersUpdate
(CustomerID,
CompanyName, ContactName, Phone)
Values(@CustomerID,
@CompanyName, @ContactName, @Phone)
レコードを更新するストアドプロシージャUpdateCommand:
Create Procedure
spCustomersUpdateTestUpdate
(@NewCompanyName
nvarchar(40),
@NewContactName
nvarchar(30),
@NewPhone
nvarchar(24),
@OrgCustomerID
int,
@OrgConcurrencyID
int)
As
Update tblCustomersUpdate
Set CompanyName =
@NewCompanyName,
ContactName =
@NewContactName,
Phone = @NewPhone,
ConcurrencyID = ConcurrencyID + 1
Where
CustomerID = @OrgCustomerID And
ConcurrencyID = @OrgConcurrencyID
レコードを削除するストアドプロシージャDeleteCommand:
Create Procedure
spCustomersUpdateTestDelete
(@CustomerID int,
@ConcurrencyID
int)
As
Delete From tblCustomersUpdate
Where CustomerID =
@CustomerID And
ConcurrencyID = @ConcurrencyID