連載:Visual Studio 2005でいってみようDBプログラミング

第7回 データソース・コントロールでいってみよう(後編)

山田 祥寛(http://www.wings.msn.to/
2006/08/26
Page1 Page2 Page3 Page4

 前回は、ObjectDataSourceコントロールと自作したデータアクセス・コンポーネントを利用して、SqlDataSourceコントロールだけでは実現できない(しにくい)イレギュラーな要件を実装する方法について紹介しました。

 今回は、引き続きObjectDataSourceコントロールにより開発を効率化する方法を紹介すると同時に、残るデータソース・コントロールであるAccessDataSource、XmlDataSourceコントロールについて解説を進めます。

今回作成するサンプル・プログラムのダウンロード(vs2005db_07.zip)

Visual Studioでデータアクセス・コンポーネントを自動生成
− ObjectDataSourceコントロール −

 前回は、データアクセス・コンポーネントを一から自分でコーディングする方法について紹介しました。しかし、あなたが必要としている機能とは、すべてがすべて自分で記述しなければならないイレギュラーな処理なのでしょうか。

 多くの場合、データ取得ロジックにはイレギュラーな操作が必要だが、更新/削除ロジックはごく定型的なコーディングで賄える、あるいはその逆というふうに、定型的な処理とイレギュラーな処理とが混在しているケースがほとんどなのではないかと思います。

 そのような場合には、必ずしも一からコードを書き起こす必要はありません。Visual Studio 2005ではデータアクセス・コンポーネント(テーブル・アダプタと型指定データセット*1)をコーディングレスで自動生成するための機能が提供されています。本機能を利用することで、データアクセス・コンポーネントをより手軽に実装することが可能になります。

*1 型指定データセットとは、特定のデータ構造を格納するために用意された専用のデータセットのことをいいます。テーブル・アダプタは、データソースに対するアクセスを行うと同時に、取得結果を型指定データセットに対して流し込む役割を担います。

■データアクセス・コンポーネントを自動生成する

 では最初に、データベース上のbooksテーブルからすべてのデータを取り出すためのデータアクセス・コンポーネントを自動生成してみましょう。

[1]新規にデータアクセス・コンポーネントを作成する

 ソリューション・エクスプローラから「App_Code」フォルダを右クリックし、表示されたコンテキスト・メニューから[新しい項目の追加]を選択してください。[新しい項目の追加]ダイアログが表示されますので、表1の要領で入力したうえで、[追加]ボタンをクリックします。

項目 設定値
テンプレート データセット
名前 BooksDataSet.xsd
表1 [新しい項目の追加]ダイアログの入力項目

 Visual Studio 2005は、ここで指定された「.xsd」ファイルの名前を基にクラス名を決定しますので、これを意識した名前を指定するべきです。通常、XxxxxDataSet.xsd(先頭は大文字)のようにデータセットであることが判別できるような名前にするのが一般的です。

 新規にデザイナ画面が開き、同時に「TableAdapter構成ウィザード」が起動しますので、以下の要領で必要な項目を入力していきます。



データ接続を選択して[次へ]ボタンをクリック



「SQLステートメントを使用する」を選択して[次へ]ボタンをクリック

図1 TableAdapter構成ウィザード(前半)

 2番目の[コマンドの種類を選択します]ダイアログでは「SQLステートメントを使用する」を選択したうえで、[次へ]ボタンをクリックします。[SQLステートメントの入力]ダイアログが表示されますので、[クエリビルダ]ボタンをクリックします。

TableAdapter構成ウィザードで[クエリビルダ]ボタンをクリック



クエリを作成して[OK]ボタンをクリック

図2 SELECT命令の生成(クエリビルダ)

 クエリビルダについては、第5回の「3.Wizardコントロールでウィザード形式の入力画面を作成する(2)」でも紹介していますので、併せて参照するとよいでしょう。最終的に、以下のようなSELECT命令が生成されていれば成功です。

SELECT isbn, title, price, publish, publishDate FROM books

 [次へ]ボタンをクリックすると、[生成するメソッドの種類]ダイアログが表示されます。ここでは特に設定は変更せず、デフォルトのままで[次へ]ボタンをクリックします。



設定を変更せずに[次へ]ボタンをクリック


図3 TableAdapter構成ウィザード(後半)

 以上で、データアクセス・コンポーネントが生成されました。デザイナ画面に以下のようにウィザードの設定内容が反映されれば成功です。

 新たに生成されたデータセットには、booksテーブル型が定義されたbooksDataTableクラスと、booksテーブルを操作するためのbooksTableAdapterクラスが含まれます。


図4 データアクセス・コンポーネントのデザイナ画面
booksテーブル型が定義されたbooksDataTableクラス(型指定データセット)と、booksテーブルを操作するためのbooksTableAdapterクラス(テーブル・アダプタ)が含まれる。

 ちなみに、booksTableAdapterクラスに別のメソッドを追加したい場合には、デザイナ画面上に生成されたbooksTableAdapterクラス上で右クリックし、表示されたコンテキスト・メニューから[クエリの追加]を選択してください。先ほど同様、TableAdapter構成ウィザードが起動し、クエリを追加することができます。

[2]TableAdapterをObjectDataSource経由で利用する

 ここでいったん、[1]で生成したTableAdapterクラスを、前回でも紹介したGridView+ObjectDataSourceコントロールから利用してみることにしましょう。

 データアクセス・コントロール(GridViewコントロール)の配置からデータべース構成ウィザードの設定手続きまでは、前回紹介したものとほとんど変わりませんので、詳細は省略します。

 以下の図5のように、ビジネス・オブジェクトの選択では「BooksDataSetTableAdapters.booksTableAdapter」を、SELECTメソッドとして「GetData()、戻り値 booksDataTable」を選択してください。




図5 データソース構成ウィザードのビジネス・オブジェクト選択
ビジネス・オブジェクトの選択では「BooksDataSetTableAdapters.booksTableAdapter」を、SELECTメソッドとして「GetData()、戻り値 booksDataTable」を選択する。

 GridViewコントロールにbooksテーブルの内容が関連付けられ、次の図6のように一覧表示されれば成功です(具体的なサンプル・コードは、サンプル・プログラム内のTypedDataSet.aspxを参照してください)。


図6 TypedDataSet.aspxの実行結果
型指定データセットをObjectDataSourceコントロール経由で、GridViewコントロールに関連付けたところ。GridViewのソート/ページング機能やオートフォーマットは適宜、前回までの手順に従って設定しておくものとする。


 INDEX
  Visual Studio 2005でいってみようDBプログラミング
  第7回 データソース・コントロールでいってみよう(後編)
  1.Visual Studioでデータアクセス・コンポーネントを自動生成(1)
    2.Visual Studioでデータアクセス・コンポーネントを自動生成(2)
    3.Microsoft Accessに特化したAccessDataSourceコントロール
    4.XMLデータを操作するXmlDataSourceコントロール
 
インデックス・ページヘ  「Visual Studio 2005でいってみようDBプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間