(※ここに書いているのは“LINQ”を使ったアクセスではなく、ADO.NETを使ったアクセスについての事です。)
Microsoft ACCESSにADO.NETを使ってアクセスする方法には“接続型”と、“非接続型”がある。
非接続型は、DBから取得したデータをDataTableに読み込むもので、DataTable上で編集をした後で一括してDBに反映することができる。
DataTableをDataGridViewコントロールにマッピングして表形式で表示することができるので、ユーザにDataGridView上で自由に更新作業(内容変更、行追加、行削除)を行なってもらうことができる。
更新した後でOleDbCommandBuilder()メソッドを実行すると更新内容をDBに反映する為の複数のSQL文(update, insert, delete)を自動生成してくれるので、SQL文をプログラムで作る必要がなく便利である。その後で、Update()メソッドを実行してDBに反映する。
ただし、トランザクション制御をしておかないと何れかのSQL文の実行でエラーが発生した場合、複数のSQL文のうち一部だけ反映され、他は反映されないということが起こる。
また、当然のことながら複数のDataTableを元に同時に更新する場合や、接続型と、非接続型が混在した更新を行なう場合もトランザクション制御が必要となる。
・非接続型のトランザクション制御
・接続型のトランザクション制御
・複数のDataTableの変更を同時にDBに反映する際のトランザクション制御
・接続型、非接続型が混在した更新のトランザクション制御
・トランザクション制御に関する分かり難いエラーメッセージ