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 フォルダを作成し、そこに配置するかの確認ダイアログが出てきます。
[はい]を押下します。
App_Code ディレクトリ確認

[Table Adapter 構成ウィザード]が始まります。
データ 接続の選択
※ 多分、データ接続の作成で作成した接続の情報が表示されているはずですが、もし無いまたは、間違っている場合は
[新しい接続]ボタンを押下して、新しい接続を作成します。その手順は■データ接続の作成の接続の追加画面
が出てきた時以降の操作とほとんど変わりません。

[接続文字列をアプリケーション構成ファイルに保存する]画面が出てきます。
接続文字列
特に理由が無ければ、保存しておきましょう。上記画面の例ですと、プログラム内で、
ConfigurationManager.ConnectionStrings プロパティ を介しての参照が可能になります。

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

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

[生成するメソッドの選択]画面が表示されます。
SQL ステートメントの入力
Fill 及び GetData と表示されている TextBox に 任意の名前を入力します。
ここでは、デフォルトの名前及びデフォルトのチェックの状態で、[次へ]ボタンを押下します。

[ウィザード結果]画面が表示されます。内容を確認して、[完了]ボタンを押下します。
ウィザード結果
TableAdapter が作成されました。
[完了]ボタンを押下すると、ウィザードは終了します。

ウィザードが完了した後に、ソリューション エクスプローラを見てみましょう。
ソリューション エクスプローラ
DataSet が出来ています。

このカテゴリーの先頭へ このページの先頭へ

■Web Page に GridView を配置する

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

このカテゴリーの先頭へ このページの先頭へ

■コードを入力

Default を デザイナ上または、ソリューションエクスプローラ上で、右クリックした時に現れるコンテキストメニューから[コードの表示]をクリックし、
コードビューに切り替えてください。
以下のコードを入力します。

Default.aspx.vb
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 は以下の様になっているはずです。
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 クラス