連載
» 2007年03月23日 00時00分 公開

第3回 テーブルアダプタの基礎連載:Visual Studio 2005によるWindowsデータベース・プログラミング(3/3 ページ)

[遠藤孝信,デジタルアドバンテージ]
前のページへ 1|2|3       

■レコード件数の取得を行うクエリの追加

 最後に、レコード件数の取得を行うクエリの作成方法も簡単に見ておきましょう。先ほどと同様にしてテーブルアダプタで[クエリの追加]を実行し、今度は次のような手順でCountAll()クエリを追加します。





「単一の値を返すSELECT」を選択



(このSELECT COUNT文はあらかじめ生成されている)




メソッド名として「CountAll」を指定


図18 レコード件数の取得を行うCountAll()クエリの作成

 これによりテーブルアダプタは次のようになります。

図19 CountAll()クエリ追加後のテーブルアダプタ

 このCountAll()クエリを呼び出して、例えばラベルに検索結果を表示するには次のようなコードを記述します。

Label1.Text = Me.taAddress.CountAll()

 すでに述べたようにFillメソッドの戻り値も取得されたレコードの件数となりますが、レコード件数を得るだけならこのようなクエリを追加します。ちなみに、すでにデータテーブルに全レコードを取得している場合には、次のようにしてデータテーブル内の行数を得ることもできます。

Label1.Text = Me.dsAddress.MyTable.Rows.Count

【コラム】アプリケーション・アーキテクチャにおけるテーブルアダプタの位置付け

 業務アプリケーションを設計する際には、アプリケーション構造の見通しを良くし、保守性を高めるために、アプリケーション構造を階層化し、各処理をコンポーネントに分割して設計することが推奨されます。いわゆる「アプリケーション・アーキテクチャ」と呼ばれるものです。

 データセットとテーブルアダプタによるデータベース・アクセスは、.NETで推奨されているアプリケーション・アーキテクチャに従っているといえます。以下の図は、.NETで推奨されている論理アーキテクチャ・モデルとの対応付けです。

図20 データセットとテーブルアダプタと推奨される論理アーキテクチャとの対応
データセット(データテーブル)は、業務データのコンテナである「ビジネス・エンティティ・コンポーネント」に該当する。また、データベースへのアクセスをまとめたテーブルアダプタは「データアクセス・ロジック・コンポーネント」に該当する。

 まずここでポイントとなるのは、アプリケーション内で実際にデータベースにアクセスする処理をすべてテーブルアダプタとして実装し、できる限りまとめておくという点です。業務処理(ビジネス・ロジック)内で直接データベースにアクセスしたり、(もっとひどい場合には)ボタンのイベント・ハンドラでデータベースにアクセスしたりということをしないようにします。

 また、テーブルアダプタにより取得されたデータは、データテーブルあるいはデータセットとして、各階層間で受け渡しを行います。ビジネス・エンティティ・コンポーネントは単なるデータの入れ物でビジネス・ロジックを持たせないという点もポイントとなります。

 もちろん、上図の論理アーキテクチャは主に大規模な分散アプリケーションの構築を想定しているので、必ずしも本連載が対象としているような業務アプリケーションにはぴったりと当てはまらないかもしれません。しかしアプリケーション・アーキテクチャというものは成功事例に基づいて作成された「パターン」ですから、頭の片隅にでも入れておけば、どうやって実装しようかと迷ったときの参考になると思います。


 今回見てきたように、データセットと同様に、テーブルアダプタもデザイン画面だけで作ってしまえるところがVisual Studio 2005の優れたところです。論理アーキテクチャでいえば、ビジネス・ロジックより下の階層はコードを書かずに構築できるわけです。

 さて次回では、データセットに取得したデータの表示について解説していく予定です。前回や今回ではDataGridViewコントロールとデータテーブルを直接データ連結してデータを表示しましたが、実際にはVisual Studio 2005の新しいコントロールである「BindingSourceコントロール」を介してデータ連結するのが一般的です。このコントロールを中心に見ていきます。

 なお、今回ではテーブルアダプタに関して参照系についてしか解説していませんが、当然ながらデータベースの更新処理についてもテーブルアダプタで実装されます。また、ウィザードによるクエリの追加だけではすべてのデータベース処理の実装を賄うことはできないため、いくつかの拡張方法も用意されています。これらについては回を改め、次回以降で解説する予定です。

「連載:Visual Studio 2005によるWindowsデータベース・プログラミング」のインデックス

連載:Visual Studio 2005によるWindowsデータベース・プログラミング

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。