.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コントロールの右肩に[GridViewタスク]メニューが表示されるので、ここから[データソースの選択]−[<新しいデータソース>]を選択する。
4. 接続先のデータベースを設定する
以下の画面のようなデータ構成ウィザードが表示されるので、ここからはウィザードに沿ってデータソースへのアクセスに必要な情報を設定する。
![]() |
||||||
[データソース構成ウィザード]ダイアログ | ||||||
以下の入力を行う。 | ||||||
|
||||||
![]() |
||||||
![]() |
||||||
[データベースの選択]ダイアログ | ||||||
下の入力を行う。 | ||||||
|
||||||
![]() |
||||||
![]() |
||||||
[Selectステートメントの構成]ダイアログ | ||||||
以下の入力を行う。 | ||||||
|
「TIPS:[ASP.NET]GridViewコントロールでデータソースの内容を表示するには?」で紹介したSqlDataSourceコントロール設定の手順と比べても分かるように、AccessDataSourceコントロールではアクセス対象のデータベースを(接続文字列ではなく)データベース・ファイルのパスとして指定する必要がある。パスは「~/App_Data/DotNetTips.mdb」のように相対パスの形式で指定しておこう。「~」はASP.NETアプリケーションでのみ有効なパス記法で、「~」はアプリケーション・ルートを意味する記号だ。
以上で、AccessDataSourceコントロールを利用するための準備は完了だ。ここで参考までにVisual Studioによって自動生成されたコードを引用しておく(ただし、<%--〜--%>は筆者によるコメント)。
|
|
Webフォーム(Access.aspx)のソース・コード(抜粋) | |
それぞれの手順を終えた後、Visual Studioによって自動生成されたコードを引用したもの。なお、<%--〜--%>は筆者によるコメント。 |
最後に、Webフォーム(Access.aspx)を実行してみよう。冒頭に挙げたようにデータベース・ファイルDotNetTips.mdbに含まれるBookテーブルの内容が表示されれば成功である。データベース・ファイルの選択を除いては、完全にSqlDataSourceコントロールと同じ要領でデータベースにアクセスできることがお分かりいただけるはずだ。
利用可能バージョン:.NET Framework 2.0 利用可能バージョン:.NET Framework 3.0 利用可能バージョン:.NET Framework 3.5 カテゴリ:Webフォーム 処理対象:GridViewコントロール 使用ライブラリ:GridViewコントロール 関連TIPS:[ASP.NET]GridViewコントロールでデータソースの内容を表示するには? |
![]() |
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
|
|
|
![]() |