.NET TIPS

[ASP.NET]GridViewコントロールでAccessデータベースの内容を表示するには?[2.0、3.0、3.5、C#、VB]

山田 祥寛
2008/09/25

 Microsoft Access(以降、Access)は、「データベースの専門知識が(少)なくても手軽に利用できる」「多くのコンピュータにインストールされている」「Microsoft Office共通のなじんだユーザー・インターフェイスが親しみやすい」などの理由から、根強い人気を誇るデータベース製品である。Accessですでに多くのデータベースを構築しているような職場では、これを(SQL Serverなどのデータベース・サーバに移行することなく)、取りあえずWeb上で展開したいという状況も少なくないのではないだろうか*1

 このようなケースのために、ASP.NETではAccessデータベース(.mdbファイル)へのアクセスに特化したAccessDataSourceコントロールを用意している。AccessDataSourceコントロールは、SqlDataSourceコントロールから派生したコントロールということで、SqlDataSourceコントロールとほとんど同様の手順で利用できるが、ただ1つ、データベース接続文字列(ConnectionStringプロパティ)が不要で、代わりにデータベース・ファイルのパス(DataFileプロパティ)を指定する必要があるという点が異なる。つまり、AccessDataSourceコントロールとは、複雑な接続文字列を意識することなく、手軽にデータベースを利用するためのデータソース・コントロールといえる。

*1 ただし、Accessはあくまでパーソナル用途を想定した簡易なデータベース製品であり、同時接続によって極端にパフォーマンスが低下するなどの問題もある。本格的なアプリケーションを構築するには、SQL Serverなどサーバ用途を想定したデータベース製品を利用することをお勧めしたい。

 さて、AccessDataSourceコントロールの概要を理解したところで、以降では、AccessDataSourceコントロールを使用したグリッド表作成の基本的な手順を見ていくことにしよう。本稿で作成するサンプル・アプリケーションの実行イメージは、以下のとおりである。

本稿で作成するサンプル・アプリケーション
Accessデータベースの内容を読み込み、グリッド表に整形する。

1. Accessデータベースをアプリケーションに配置する

 本サンプルを動作するには、Accessデータベースに、以下のようなBookテーブルを用意しておく必要がある。

フィールド名 データ型 概要
isbn テキスト型(サイズは17) ISBNコード(主キー)
title テキスト型(サイズは100) 書名
price 数値型(整数型) 価格
publish テキスト型(サイズは25) 出版社名
published 日付/時刻型 刊行日
Bookテーブルのフィールド・レイアウト

 また、Bookテーブルにはグリッド表に表示できるように適当なデータを何件か登録しておこう。

 作成したAccessデータベース・ファイル(ここでは「DotNetTips.mdb」とする)は、アプリケーション・ルート配下の「/App_Data」フォルダに配置する。

 .mdbファイルはアプリケーション配下の任意のフォルダに配置することが可能であるが、その場合にはURLさえ知っていれば、エンド・ユーザーが.mdbファイルをダウンロードできてしまう。このような状態は、セキュリティなどという言葉を持ち出すまでもなく、当然、好ましいことではない。

 しかし、App_Dataフォルダに配置することで、エンド・ユーザーがHTTP経由で.mdbファイルにアクセスすることができなくなるわけだ。特別な理由がない限り、データベース・ファイルは、App_Dataフォルダ配下に配置することを強くお勧めする*2

*2 そのほか、テキスト・ファイルやXMLファイル、独自の設定ファイルなど、やはりアプリケーション内部でのみ利用するようなファイルは、App_Dataフォルダに配置するべきだ。

2. データベースへのアクセス権限を設定する

 Accessデータベース・ファイルを扱う場合には、データベース・ファイルを配置したフォルダに対して適切なアクセス権限を設定しておく必要がある。具体的には、ASP.NETの実行ユーザーが「App_Data」フォルダ(データベース・ファイルを配置したフォルダ)に対して読み取り/書き込みアクセス権を持つ必要がある。実行ユーザーは、Windows 2000/XPでは「ASPNET」、Windows Server 2003などでは「NETWORK SERVICE」である。

 ちなみに、Visual StudioでWebサイトを作成した場合、デフォルトで「/App_Data」フォルダが作成され、かつ、ASPNET/NETWORK SERVICEアカウントに対して、読み取り/書き込みアクセス権が付与されることになるので、これらアクセス権限の設定を意識する必要はない。

3. 新規のWebフォームを作成する

 データベースの準備ができたところで、ここからはデータベース・アクセスのためのページを作成していこう。新規のWebフォーム(Access.aspx)を作成したら、フォーム・デザイナから以下の画面の要領でGridViewコントロールを配置する。

Webフォーム(Access.aspx)のフォーム・レイアウト
フォーム上には以下のコントロールを配置する。
  GridViewコントロール(IDは「grid」。オートフォーマットに「オセアニカ」)。

 GridViewコントロールの右肩に[GridViewタスク]メニューが表示されるので、ここから[データソースの選択]−[<新しいデータソース>]を選択する。

4. 接続先のデータベースを設定する

 以下の画面のようなデータ構成ウィザードが表示されるので、ここからはウィザードに沿ってデータソースへのアクセスに必要な情報を設定する。

[データソース構成ウィザード]ダイアログ
以下の入力を行う。
  「Accessデータベース」を選択。
  「ads」と入力。

[OK]ボタンをクリック

[データベースの選択]ダイアログ
下の入力を行う。
  「~/App_Data/DotNetTips.mdb」を選択。

[次へ]ボタンをクリック

[Selectステートメントの構成]ダイアログ
以下の入力を行う。
  「Book」を選択。
  「*」にチェック。

 「TIPS:[ASP.NET]GridViewコントロールでデータソースの内容を表示するには?」で紹介したSqlDataSourceコントロール設定の手順と比べても分かるように、AccessDataSourceコントロールではアクセス対象のデータベースを(接続文字列ではなく)データベース・ファイルのパスとして指定する必要がある。パスは「~/App_Data/DotNetTips.mdb」のように相対パスの形式で指定しておこう。「~」はASP.NETアプリケーションでのみ有効なパス記法で、「~」はアプリケーション・ルートを意味する記号だ。

 以上で、AccessDataSourceコントロールを利用するための準備は完了だ。ここで参考までにVisual Studioによって自動生成されたコードを引用しておく(ただし、<%--〜--%>は筆者によるコメント)。

<%--グリッド表のスタイルを定義、また、データソースとの関連付けを行う--%>
<asp:GridView ID="grid" runat="server" BackColor="White"
  BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px"
  CellPadding="4" DataKeyNames="isbn" DataSourceID="ads">
  <FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
  <RowStyle BackColor="White" ForeColor="#003399" />
  <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
  <SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
  <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
</asp:GridView>
<%--データベース・ファイルのパスやSELECT命令を定義--%>
<asp:AccessDataSource ID="ads" runat="server"
  DataFile="~/App_Data/DotNetTips.mdb"
  SelectCommand="SELECT * FROM [Book]"></asp:AccessDataSource>
Webフォーム(Access.aspx)のソース・コード(抜粋)
それぞれの手順を終えた後、Visual Studioによって自動生成されたコードを引用したもの。なお、<%--〜--%>は筆者によるコメント。

 最後に、Webフォーム(Access.aspx)を実行してみよう。冒頭に挙げたようにデータベース・ファイルDotNetTips.mdbに含まれるBookテーブルの内容が表示されれば成功である。データベース・ファイルの選択を除いては、完全にSqlDataSourceコントロールと同じ要領でデータベースにアクセスできることがお分かりいただけるはずだ。End of Article

利用可能バージョン:.NET Framework 2.0
利用可能バージョン:.NET Framework 3.0
利用可能バージョン:.NET Framework 3.5
カテゴリ:Webフォーム 処理対象:GridViewコントロール
使用ライブラリ:GridViewコントロール
関連TIPS:[ASP.NET]GridViewコントロールでデータソースの内容を表示するには?

この記事と関連性の高い別の.NET TIPS
[ASP.NET]ASP.NETアプリからパスワード付きAccessデータベースにアクセスするには?
[ASP.NET]GridViewコントロールでデータソースの内容を表示するには?
アプリケーション内でデータベースをアタッチするには?
[ASP.NET]データベースからリッチなメニューを作成するには?
[ASP.NET]GridViewコントロールの表示データを特定条件で絞り込むには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


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 記事ランキング

本日 月間