連載
» 2007年05月07日 00時00分 公開

ODTを使ったVisual StudioからのPL/SQL開発.NETユーザー必見! Oracle 10gのお作法(2)(3/4 ページ)

[三谷亮太,日本オラクル]

Webページの作成

 それではストアドプロシージャとASP.NETを連携させるアプリケーションを作成してみましょう。今回作成するサンプルは従業員の居眠り回数を表示し、ストアドプロシージャを使って更新するアプリケーションです。

 Visual Studioを起動し、メニューの[ファイル]→[新しいWebサイト]を選択すると[新しいWebサイト]ダイアログが表示されます。IISがセットアップされていない環境でも動作可能とするため、[場所]から[ファイルシステム]を選択します(図18)。

図18 新しいWebサイトをファイルシステム上に作成する 図18 新しいWebサイトをファイルシステム上に作成する

 前回と同様、作成したWebサイトにOracle.DataAccessの参照設定を追加します。今回作成するWebサイトに、前回作成したDataAccessクラスを追加します。前回と同様、ソリューションエクスプローラよりWebサイトを右クリックし[ASP.NETフォルダの追加]→[App_Code]と選択します。作成されたApp_Codeフォルダを右クリックし、[既存項目の追加]より、前回作成したDataAccess.vb(またはDataAccess.cs)ファイルを追加します。

 追加したDataAccessクラスに、EMP表とDOZE表をJOINして社員情報と居眠り回数を取得するGetDozeDataメソッドを追加します(リスト3)。

Public Function GetDozeData() As DataSet
    conn = Me.DbConnect
    cmd = conn.CreateCommand
    cmd.Connection = conn

    cmd.CommandText = 
        "SELECT e.EMPNO,e.ENAME,d.COUNT,d.FIRST,d.RECENT"
    cmd.CommandText &= 
        " FROM EMP e LEFT JOIN DOZE d ON e.EMPNO = d.EMPNO"
    ds = New DataSet
    da = factory.CreateDataAdapter()
    da.SelectCommand = cmd
    da.Fill(ds)
    Return ds
  End Function
リスト3 EMP表とDOZE表をJOINして社員情報と居眠り回数を取得(VB.NET)
C#のコードを表示する

 この時点で一度Webサイトをビルドします(方法と理由は前回を参照)。

 次にWebページにGridViewを追加しIDをDozeGridViewに変更します。DozeGridViewにObjectDataSourceを追加し、SELECTメソッドにはGetDozeDataを設定します。GridViewやObjectDataSourceの追加方法については前回の記事をご覧ください(図19)。

図19 DozeGridViewの作成 図19 DozeGridViewの作成

 Webブラウザを開き、正常にEMP表とDOZE表からデータが取得できていることを確認します(図20)。

図20 Webブラウザで動作確認 図20 Webブラウザで動作確認

ストアドプロシージャ呼び出しの追加

 Webページにストアドプロシージャの呼び出しを追加します。DozeGridViewの右上にある三角マークをクリックし、表示されるGridViewタスクから[新しい列の追加]をクリックします(図21)。

図21 GridViewに新しい列を追加する 図21 GridViewに新しい列を追加する

 [フィールドの追加]ダイアログが表示されますので、「フィールド型」を「ButtonField」、「ボタンの種類をButton」、テキストに「報告」と入力して[OK]を押下します。コマンド名は本来不要ですが、Cancelのままとしておきます(図22)。

図22 フィールドのプロパティ設定 図22 フィールドのプロパティ設定

 DataAccessクラスにストアドプロシージャ呼び出しのメソッドを追加します(リスト4)。

    Public Sub RegistDoze(ByVal prmId As Int32)
        conn = Me.DbConnect
        cmd = conn.CreateCommand
        cmd.Connection = conn
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "REGISTDOZE"

        Dim param1 = cmd.CreateParameter
        param1.ParameterName = "ID"
        param1.DbType = DbType.Int32
        param1.Value = prmId

        cmd.Parameters.Add(param1)
        cmd.ExecuteNonQuery()
    End Sub
リスト4 ストアドプロシージャ呼び出しメソッド(VB.NET)
C#のコードを表示する

 Webページのボタンが押下された際に、リスト4で追加したメソッドを呼び出すコードを記述します。Default.aspxの上部コンボボックスよりDozeGridViewのRowCommandイベントを選択し(図23)、リスト5のコードを記述します。

図23 DozeGridViewのRowCommandイベントを選択 図23 DozeGridViewのRowCommandイベントを選択
Protected Sub DozeGridView_RowCommand( _
  ByVal sender As Object, _
  ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) _
  Handles DozeGridView.RowCommand
        Dim index As Int32
        Dim EmpNo As String
        Dim da As New DataAccess
        index = e.CommandArgument
        EmpNo = DozeGridView.Rows(index).Cells(1).Text
        da.RegistDoze(EmpNo)
End Sub
リスト5 ボタン押下イベント時にストアドプロシージャを呼び出す(VB.NET)
C#のコードを表示する

 Webサイトをビルド、デバッグ実行しエラーが発生しないことを確認します(図24)。

図24 ストアドプロシージャの動作確認 図24 ストアドプロシージャの動作確認

 実行後、Dozeテーブルのデータを参照し、正常に登録されていることを確認します(図25)。

図25 テーブルのデータ確認 図25 テーブルのデータ確認

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。