ADO.NET SQL Serverのホームへ戻る

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

 

 

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

 

このサンプルは、DataTable上で変更されたレコードをSqlDataAdapterUpdate()メソッドを使用してデータベースに反映します。Update()メソッドが使用するSQLInsert, Update, Deleteステートメントは、SqlCommandBuilderで自動生成しています。

 

このサンプルでは、次のような処理を行っています。

 

  NwindSQLデータベースに得意先テーブル(tblCustomersUpdate)作成

  得意先テーブルにテストデータ作成

  得意先テーブルをDataTableに取り込む

  DataTableのレコード編集(レコードの追加、編集、削除を含む)

  Update()メソッドでDataTableを得意先テーブルに反映

 

SqlDataAdapterUpdate()メソッドでDataTableを得意先テーブルに反映するときに使用するSQL(Insert/Update/Delte)は、SqlCommandBuilderで自動生成したものを使用します。

 

このサンプルでは、以下のノウハウを習得することができます。

 

  SQL Serverのデータベースからテーブルを削除する方法 (Drop Table)

  SQL Serverのデータベースにテーブルを作成する方法 (Create Table)

  DataTableを生成する方法

  DataTableのレコードを処理(追加、編集、削除、抽出)する方法

  SqlDataAdapterFill()メソッドで使用する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)) )

 

ADO.NET SQL Serverのホームへ戻る