さて、細かいコードの説明の前に、データベースとのやり取りをする仕組みの概略を理解しておく。
3で述べたように、最初にデータ接続があった。
これは、データベースに接続するための設定情報を含むAdapterと呼ばれるプログラムとConnectionと呼ばれるプログラムなどデータベースに接続するための必要なプログラムの総称である。VisualStudioを使ってデータベースおよびテーブルを作成すると自動的にデータ接続が設定される。
その後、データソースを追加したが、これがデータセットDataSetである。
データセットはデータベースのコピーのようなものでメモリ上に展開される。直接データベースとやり取りするのではなく、メモリ上のデータセットとやり取りして、全てが終了するときに、データベースへ変更結果を書き込むようにするのである。メモリ上の処理なので高速であること等のメリットがある。
横文字のコンポーネントがいくつか登場しました。改めて確認しておく。
tableBindingNavigator フォーム上のインターフェース、独自デザインで自作も可能。
tableBindingSource フォーム上のコントロールとデータベースを接続する機能
tableTableAdapter データの取得や変更の通知を管理、テーブルへのデータをDataSetに格納。
tableAdapterManagerデータを関連するデータテーブルに保存する機能を提供するコンポーネント。
tableTableAdapterとtableAdapterManagerの違いはよくわからない。しかし、Managerの登場が後なので、データの更新にはこちらを使うようである。UpdateAllメソッドがそれ。
tableTableAdapterの方はUpdateメソッドで、こちらでも更新は可能。ただし、エラーが発生する場合があるため、アダプターの Update
メソッドを呼び出すコードは try
/catch
ブロック内に配置する必要がある。
自動生成されるtableBindingNavigatorSaveItem_ClickイベントはManagerよるUpdateAllで更新。try
/catch
ブロックはない。
初期設定のまま、実行するとデータグリッドにテーブルの全データが表示される。
これにはAdapterのFillメソッドが使われている。FillはSELECTコマンドの実行結果を格納している。検索には、これにフィルターを付加して実行させる。詳細は次回とする。
内部を理解するには結構大変である。
ここまである程度理解して、独自の機能を追加してコードを記述していく。
※コメント投稿者のブログIDはブログ作成者のみに通知されます