Web アプリケーション (ASP.NET) でDBのデータを表示しよう(VS2005 TableAdapter 編)
VS2003 DataAdapter 編 につづいて、VS2005 の TableAdapter を使って、DataBase へのアクセスします。
こちらで最終的に実現したい事は、VS2003 DataAdapter 編とほぼ同じです。
※解説に用いた Visual Studio 2005 の Edition は、Team System Edition です。
サンプルのダウンロード
■プロジェクトの作成
プロジェクトの作成についてはWeb アプリケーション (ASP.NET) を作ってみようと
全く同じなのでここでは割愛します。
※今回は、プロジェクト名を MyWebDBApp02 としました。
■データ接続の作成
サーバー エクスプローラ(表示されていない場合は、メニューバーの[表示]→[サーバー エクスプローラ]をクリックして表示させてくださいね)の
[データ接続]を右クリックします。コンテキストメニューより、[接続の追加]を選択します。

[データ ソースの選択]画面が出てきます。
※[接続の追加]画面が出てきた場合、[変更]ボタンを押下することで表示できます。

ここでは、SQL Server 2000 のデータベースにつなげようとしているので、
データ ソース 及び データ プロバイダも SQL Server なんやらかんやらを選択して、[OK]を押下します。
[接続の追加]画面が出てきます。

接続に必要な情報を入力します。(↑の例では、ローカルマシン上の SQL Server 2000 の NorthWind データベースに Windows 認証で接続しようとしています)
入力し終わったら、[接続の確認]ボタンを押下します。

上記メッセージが出たら、入力した情報が正しいということです。反対に上記以外のメッセージが出た場合、入力した情報に誤りがある可能性があります。
[接続の確認]が終わったら、[OK]ボタンを押下します。サーバー エクスプローラ には 追加した接続が表示されます。
■Table Adapter の作成
ソリューション エクスプローラ(表示されていない場合は、メニューバーの[表示]→[ソリューション エクスプローラ]をクリックして表示させてくださいね)の
プロジェクトを選択して、右クリックします。コンテキストメニューより、[新しい項目の追加]を選択します。

下図の画面で、データセットを選択し、ファイル名に任意の名前を入力します。
(お尻の .xsd は入れても入れなくてもよいです。ここでは、ファイル名を Customers.xsd としました)

次に、前述で作成した Dataset を App_Code フォルダを作成し、そこに配置するかの確認ダイアログが出てきます。
[はい]を押下します。

[Table Adapter 構成ウィザード]が始まります。

※ 多分、データ接続の作成で作成した接続の情報が表示されているはずですが、もし無いまたは、間違っている場合は
[新しい接続]ボタンを押下して、新しい接続を作成します。その手順は■データ接続の作成の接続の追加画面
が出てきた時以降の操作とほとんど変わりません。
[接続文字列をアプリケーション構成ファイルに保存する]画面が出てきます。

特に理由が無ければ、保存しておきましょう。上記画面の例ですと、プログラム内で、
ConfigurationManager.ConnectionStrings プロパティ を介しての参照が可能になります。
[コマンドの種類を選択します]画面が出てきます。

今回はストアドプロシージャは使わないので、
一番上の[SQL ステートメントを使用する]を選択して、[次へ]ボタンを押下します。
[SQL ステートメントの入力]画面が表示されます。

クエリビルダ を使ったりして、Customers テーブルに対する SELECT 文を記述します。
(この時、SELECT 文で抽出する項目の中に、主キーフィールドを入れておくと、後々に UPDATE 文 や DELETE 文もウィザードが自動生成してくれます)
[次へ]ボタンを押下します。
[生成するメソッドの選択]画面が表示されます。

Fill 及び GetData と表示されている TextBox に 任意の名前を入力します。
ここでは、デフォルトの名前及びデフォルトのチェックの状態で、[次へ]ボタンを押下します。
[ウィザード結果]画面が表示されます。内容を確認して、[完了]ボタンを押下します。

TableAdapter が作成されました。
[完了]ボタンを押下すると、ウィザードは終了します。
ウィザードが完了した後に、ソリューション エクスプローラを見てみましょう。

DataSet が出来ています。
■Web Page に GridView を配置する
ソリューション エクスプローラ にある Default.aspx に、コントロールを配置します。
ツールボックス(表示されていない場合は、メニューバーの[表示]→[ツールボックス]をクリックして表示させてくださいね)の
[データ]タブの中にある、GridView を、デザイナ上の Web Page にドラッグします。

■コードを入力
Default を デザイナ上または、ソリューションエクスプローラ上で、右クリックした時に現れるコンテキストメニューから[コードの表示]をクリックし、
コードビューに切り替えてください。
以下のコードを入力します。
Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then Dim ta As CustomersTableAdapters.CustomersTableAdapter = _ New CustomersTableAdapters.CustomersTableAdapter Me.GridView1.DataSource = ta.GetData() Me.GridView1.DataBind() End If End Sub End Classちなみに、Default.aspx は以下の様になっているはずです。
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> </div> </form> </body> </html>
データ接続を作成する際、SQL Server への認証を「Windows 認証」にしました。
ASP.NET の場合は、実行時に SQL Server へログオンするのは、ASPNET ユーザーになります。
その為、SQL Server にログインする権限がないとエラーが発生します。
ASPNET ユーザーに権限を与える方法もありますが、通常は "偽装" と呼ばれるテクニックを使います。
偽装をする為にもっともポピュラーな方法は、web.config ファイルに以下の一文を追記します。
<identity impersonate="true" userName="SQL Server にアクセスできる権限のあるユーザー名" password="userName に記述したユーザーの Windows ログオンパスワード" />
■実行しよう!
コードの入力が終わったら、現在作業した Default.aspx をスタート ページに設定します。
ソリューションエクスプローラ上で、Default.aspx を右クリックして、[スタート ページに設定]をポイントします。
メニューバーの[デバッグ]→[デバッグ開始]をクリックして実行します。
↓こんな画面が出現しましたか?

上記の通りに動作すれば大成功です。
■参考資料
TableAdapter
TableAdapter 構成ウィザード
ConfigurationManager クラス
GridView クラス