Part6 .NETで,データベース・プログラムはこう作る
|
![]() |
| 図1●Visual C# 2005 Express Editionのデータベース関連のコントロール |
データベース・コントロールの関係や役割は,ざっと図2のようになります。ADO .NET 1.1の中核コントロール(DataAdapter,Connection,Command)が果たしてきた役割は,今後は「TableAdapter」クラスが担当するというわけです。しかし,TableAdapterクラスは,図1のツールボックスに見当たりませんね。実はTableAdapterクラスは“VS 2005が生成する”クラスなのです。詳しくは後で説明しますが,VS 2005でのデータベース・アプリケーション開発で非常に重要な働きをするクラスであることを,まず覚えておいてください。
![]() |
| 図2●Windowsプロジェクトで利用できるデータベース・コントロールの関係。VS 2005(b)では,VS 2003(a)の三つのコントロール(DataAdapter,Connection,Command)に代わり,TableAdapterクラスを使う [画像のクリックで拡大表示] |
新たに加わったBindingSourceコントロールとBindingNavigatorコントロールは,それぞれ連携しながらデータ表示/操作の管理を行います。BindingSourceコントロールは,データソースになるDataSet(メモリーに格納されたテーブルの内容や情報)を一元的に管理します。そしてBindingSourceに接続しているBindingNavigatorコントロールに,カレント・レコード(現在操作しているレコード)の移動,追加,削除の機能を提供します。一方,BindingNavigatorコントロールは,カレント・レコードを操作するためのユーザー・インタフェース部品です。「次に移動」「前に戻る」「最初/最後に移動」「新規追加」「削除」「保存」といったボタンを備えています。
BindingSourceコントロールは,DataBindingsプロパティ経由でBindingSourceにアクセスする他のデータ・コントロール(データ入力や表示を行うコントロール)にも,カレント・レコードの情報を提供します。これは,BindingSourceに接続しているすべてのコントロールが,同じDataSet上のカレント・レコードを参照することを意味します。したがって,BindingNavigatorでレコードの位置を移動させると,それに伴ってすべてのデータ・コントロールの表示内容も同時に変わります。反対に,データ・コントロールで入力・更新されたレコードの内容も,ほかのコントロールにすぐさま反映されます。
そのほか,BindingSourceコントロールは様々なメソッドやプロパティを備えています。これらをプログラムで直接操作すれば,BindingNavigatorを使わずに,レコード操作を行うことも可能です。
DataGridViewコントロールは,現行のDataGridコントロールの機能拡張版です。DataGridでは,画像イメージを含むカラム(列)を表示するにはカスタマイズが必要ですが,DataGridViewでは標準機能としてカラムの画像を表示できます。また,Rowsプロパティを直接指定することで,データソースとバインドしていないデータを表示することも可能です。プログラムでプロパティを操作すれば,表示したいセル位置(Row/Col位置)をグリッドの左上に移動させるといったこともできます。また,面白い機能としては,グリッドのデータをクリップボードにコピーする機能も追加されています。図3は,グリッドに表示したデータをクリップボードにコピーし,それを取得してラベルとして表示するアプリケーションです。クリップボードにコピーするボタンのイベント・ハンドラはリスト1の通りです。クリップボードへのコピーとデータ取得が簡単に記述できることがわかると思います。
![]() |
| 図3●グリッドに表示したデータをクリップボードにコピーし,それを取得してラベルとして表示するアプリケーション |
|
| リスト1●図3のアプリケーションのbutton2のClickイベント・ハンドラ。DataGridViewは,データをクリップボードにコピーする機能を持つ |