連載
» 2006年01月07日 00時00分 公開

.NETでOracleアプリを作ろう(3):Oracleアプリだってコーディング量を減らしたい (4/4)

[小海友和,日本オラクル]
前のページへ 1|2|3|4       

手順10

 コードでは、用意したemp_nameパラメータにTextBoxの値を代入する式を1つ付け加えます(リスト3の赤字部分)。SELECT用に用意されたOracleCommandオブジェクト(empVpdSelectOracleCommand1)のParametersプロパティを使用して、OracleParameterオブジェクトを獲得し、そのValueプロパティにTextBoxの値を入力します。

Private Sub Button1_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles Button1.Click
    ' 接続をオープン
    empVpdOracleConnection1.Open()

    ' フォーム上のTextBoxの値をClientIdパラメータにセット
    empVpdOracleConnection1.ClientId = "D10"

    ' parameterの使用
    empVpdSelectOracleCommand1.Parameters("emp_name").Value = _
    TextBox1.Text


    ' DataSet内のデータの消去
    EmpVpd11.Clear()

    ' OracleDataAdapterオブジェクトのFillメソッド
    ' でDataSetへデータを格納
    empVpdOracleDataAdapter1.Fill(EmpVpd11.EmpVpd)

    ' DataGridにDataSetをバインド
    DataGrid1.SetDataBinding(EmpVpd11, "EmpVpd")

    ' 接続をクローズ
    empVpdOracleConnection1.Close()
End Sub
リスト3 TextBox値をOracleParameterに渡すために追加するコード(赤字部分)

 コードの追加が終わりましたら、動作確認をしてみましょう。ビルドしてアプリケーションを開始します。社員名にKINGと入力して、「検索」ボタンをクリックします。KINGのデータが表示されることを確認してください(図21)。

図21 社員名での検索  図21 社員名での検索
メモ:今回、SELECT文を構成する際、WHERE句は単純に「ename = :emp_name」としただけですので、社員名の大文字/小文字は区別され、完全一致するものしか表示されません。SELECT文にLIKE条件を使用したり、Oracleデータベースの全文検索機能(Oracle Text)を使用することでより柔軟な検索も可能となります。

DataGridの変更をデータベースに反映させる

 最後に、DataGridの変更をデータベースに反映させる機能を追加しましょう。といってもすでに、OracleDataAdapterウィザードでUPDATE用のOracleCommandは作成されているので、作業は非常に簡単です。フォームデザイナで「更新」ボタンをダブルクリックして、リスト4のように記述します。

Private Sub Button2_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles Button2.Click
    ' OracleDataAdapterのUPDATEメソッドを実行
    empVpdOracleDataAdapter1.Update(EmpVpd11, "EmpVpd")  (1)
    
    ' 更新完了のメッセージを表示
    MsgBox("更新されました")                               (2)
End Sub
リスト4 Updateメソッドの使用

(1)DataGridとDataSetはバインドされているので、DataGrid上での変更はDataSetに即反映されます。DataSetの変更をデータベースに反映させるために、OracleDataAdapterのUPDATEメソッドを使用します。UPDATEメソッドが実行されると、OracleDataAdapterのUpdateCommandプロパティにセットされているOracleCommandが実行されます。このUpdateCommand用のOracleCommandはOracleDataAdapterウィザードで自動的に作成されているため、特に記述する必要はありません。DataSetとDataTableを指定してOracleDataAdapterのUPDATEメソッドを実行するだけでDataSetの変更がデータベースに反映されます。

(2)UPDATE完了後、メッセージボックスを表示します。

 コーディングが終わったら、ビルドを行い、アプリケーションを開始して動作確認を行ってみましょう(図22)。

図22 DataGridの変更をデータベースに反映 図22 DataGridの変更をデータベースに反映

 以上で、データベースへアクセスするサンプル・アプリケーションの作成は終了です。ODT機能を活用することで、非常に少ないコーディングで、データの取得、絞り込み、更新が可能であることが分かったと思います。また、Oracleデータベース特有の機能もODP.NETを使用することで最大限引き出すことが可能です。今回はVPDとClientId連携をサンプルとして取り上げました。


 次回は、「Oracle Database 10g Release2」の新機能である「Oracle Database Extension for .NET」という.NETでOracleデータベースのストアドプロシージャを作成する機能について説明します。ご期待ください。


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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