連載
» 2007年02月27日 00時00分 公開

連載:Visual Studio 2005によるWindowsデータベース・プログラミング:第2回 データセットとデータテーブル (1/3)

データセットを経由してDBにアクセスするのが.NET DBアプリの基本的なモデル。VB 2005を使ってデータセットを定義。

[遠藤孝信,デジタルアドバンテージ]
連載:Visual Studio 2005によるWindowsデータベース・プログラミング
業務アプリInsider/Insider.NET

powered by Insider.NET

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

連載目次

 前回はVisual Basic 2005 Express Edition(以下VB 2005)を使って、WindowsアプリケーションのプロジェクトにSQLデータベースを追加し、そのデータベース内にテーブルを作成しました。今回からは、データベースのレコードをWindowsフォームのグリッドに表示することを取りあえずの目標として、そこまでの手順を1つずつ解説していきます。

 今回では、前回でも少し登場した「データセット(DataSet)」を使っていきますが、その前にデータセットとは何かについて簡単に説明していきます。

データセットとは?

 典型的な.NETのWindowsデータベース・アプリケーションでは、データセットを通じてアプリケーションからデータベースにアクセスします。データセットとは前回でも述べたように、簡単にいうと「データベースから取得したレコードをメモリ上に持つための入れ物」です。

 例えば、データベースからレコードを取得し、それをグリッド・コントロールに表示するようなWindowsアプリケーションの大まかな構造は次の図のようになります。

図1 Windowsデータベース・アプリケーションの大まかな構造
アプリケーションはデータセットを通じてデータベースにアクセスする。

 この構造では、まずグリッドでの表示に必要なレコードをデータベースからデータセットに取得します。これはデータベースにSELECT文を発行することにより行われます。SELECT文の実行により得られたレコードは、データセット内にすべて格納されます。

 グリッド・コントロールとデータセットはあらかじめ「データ連結(データバインド)」しておきます。これによりデータセットの内容はグリッド・コントロールにリアルタイムに反映されます。その結果、いま取得したデータセット内のレコードがグリッドに表示されるわけです。グリッド・コントロール上ではデータセットの内容に対して、並べ替えやページングが行えます。

 グリッド上でデータを追加/編集/削除した場合には、データ連結によりデータセットの内容も変化します。変更が加えられたデータセットは、(通常は)ユーザーからの指示のタイミングでデータベースに反映されます。この場合にはデータセットの変更内容に従って、INSERT/UPDATE/DELETE文がデータベースに対して発行されます。

 以上は、Windowsアプリケーションにおけるデータベース・アクセスのモデルといってよいでしょう。つまり、最初にデータセットにレコードを取得し、ユーザーによる操作(=業務)が完了した後、データセットのレコードをデータベースに反映するというモデルです。

 このモデルでは、最初と(レコードの更新がある場合には)最後にしかデータベースにアクセスせず、基本的にはデータベースとは非接続であるため「非接続型データアクセス」と呼ばれます。VB 2005やVisual Studio 2005(以下VS 2005)のIDEを使って構築するWindowsデータベース・アプリケーションは基本的にこのモデルとなります。

データセット内のテーブルを表すデータテーブル

 VB 2005のIDEでデータセットを使用する前に、「データテーブル(DataTable)」についても解説しておかなければなりません。

 データベースにテーブルが含まれているように、データセットにはデータテーブルが含まれます(図2)。そして、データベースのレコードが実際にはテーブル内に格納されているように、データベースから取得したレコードは、実際にはデータセット内のデータテーブルに格納されます。

図2 データセットと実際のデータベースの対比

 データテーブルでは、データベースのテーブルと同様のスキーマを定義することができます。つまり、データテーブルには列を定義でき、各列は列名やデータ型、制約などを設定できます。もちろん主キーとなる列も設定できます。このようにデータテーブルは実際のテーブルと同じ構造を持つことができ、データベースから取得したレコードをそのまま格納できるようになっています。

 また、SQL Serverなどのリレーショナル・データベースではテーブル間のリレーション(リレーションシップ、関連)が重要ですが、データセットではデータテーブル間のリレーションも表現でき、データベースでの実際のリレーションをデータセット内でも維持できるようになっています。

 データセットやデータテーブルについての説明は以上ですが、より詳細な解説は「ADO.NET基礎講座:第4回 データセットを使ったデータベース・アクセス」で行っていますので参考にしてください。

       1|2|3 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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