● SqlDataAdapterのUpdate()メソッドでDataTableをデータベースに反映するサンプル(SQLコマンド自動生成)

図 Update()メソッドでデータベースに反映するサンプル(SQLコマンド自動生成)
このサンプルは、DataTable上で変更されたレコードをSqlDataAdapterのUpdate()メソッドを使用してデータベースに反映します。Update()メソッドが使用するSQLのInsert, Update, Deleteステートメントは、SqlCommandBuilderで自動生成しています。
このサンプルでは、次のような処理を行っています。
・ NwindSQLデータベースに得意先テーブル(tblCustomersUpdate)作成
・ 得意先テーブルにテストデータ作成
・ 得意先テーブルをDataTableに取り込む
・ DataTableのレコード編集(レコードの追加、編集、削除を含む)
・ Update()メソッドでDataTableを得意先テーブルに反映
SqlDataAdapterのUpdate()メソッドでDataTableを得意先テーブルに反映するときに使用するSQL(Insert/Update/Delte)は、SqlCommandBuilderで自動生成したものを使用します。
このサンプルでは、以下のノウハウを習得することができます。
▲ SQL Serverのデータベースからテーブルを削除する方法 (Drop Table)
▲ SQL Serverのデータベースにテーブルを作成する方法 (Create Table)
▲ DataTableを生成する方法
▲ DataTableのレコードを処理(追加、編集、削除、抽出)する方法
▲ SqlDataAdapterのFill()メソッドで使用するSQLを自動生成する方法
データベースからテーブルを削除する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)
アプリケーションが用意したSelectCommand:
SELECT * FROM CustomersUpdate
SqlCommandBuilderが生成したInsertCommand:
INSERT INTO tblCustomersUpdate
(CustomerID , CompanyName , ContactName , Phone )
VALUES ( @p1 , @p2 , @p3 , @p4 )
SqlCommandBuilderが生成したUpdateCommand:
UPDATE tblCustomersUpdate
SET CustomerID = @p1 , CompanyName = @p2 , ContactName = @p3 , Phone = @p4
WHERE ( (CustomerID = @p5) AND
((CompanyName IS NULL AND @p6 IS NULL) OR (CompanyName = @p7)) AND
((ContactName IS NULL AND @p8 IS NULL) OR (ContactName = @p9)) AND
((Phone IS NULL AND @p10 IS NULL) OR (Phone = @p11)) )
SqlCommandBuilderが生成したDeleteCommand:
DELETE FROM tblCustomersUpdate
WHERE ( (CustomerID = @p1) AND
((CompanyName IS NULL AND @p2 IS NULL) OR (CompanyName = @p3)) AND
((ContactName IS NULL AND @p4 IS NULL) OR (ContactName = @p5)) AND
((Phone IS NULL AND @p6 IS NULL) OR (Phone = @p7)) )