Oracleエクスプローラから表をドラッグ&ドロップするだけでは、DataSetは作成されません。ただ、DataSetの作成もODTの機能を使用することで、簡単に行うことができます。
DataSetには型付DataSetと型なしDataSetが存在します。型付DataSetはあらかじめスキーマ定義を行う必要があるため、手動での作成はやや面倒です。ただし、パフォーマンスや、開発効率という点からDataSetはできる限り型付DataSetとして作成することが望ましいとされています。ODTを使用すると、この型付DataSetを簡単に作成できます。
すでに作成されているOracleDataAdapterコンポーネントを右クリックし、「DataSetを生成...」をクリックします(図7)。
これによって、型付DataSetが作成されます(図8)。
ここで作成されるDataSetは、型付DataSetなので、スキーマ定義も自動的に作成されます。スキーマ定義を確認するには、作成されたDataSetを右クリックして、「スキーマの表示...」をクリックします(図9)。
スキーマ定義がグラフィカルに表示されます(図10)。EMP_VPD表は、DataSet内でEmpVpdという名前のDataTableとして定義されています。
スキーマ定義はXMLスキーマ定義言語(XSD)で定義されています。スキーマ定義ファイルをXML形式で表示することも可能です(図11)。
今回のサンプル・アプリケーションは最終的に社員名によるデータ検索、データの更新までを行えるものになりますが、まずは、DataGridにデータを表示するところから始めてみましょう。検索ボタンをダブルクリックして、以下のようにコーディングします。
Private Sub Button1_Click(ByVal sender As System.Object, _ |
リスト1 DataGridへデータを表示するためのコード(VB) |
(1)まず、接続をオープンします。実は非接続型データアクセスを行う場合、Openは省略することが可能です。OracleDataAdapterのFillメソッドを実行時に接続がオープンされていない場合、暗黙的にオープンし、Fill終了時にクローズするためです。しかし、ClientIdをセットするためには、接続がオープンしている必要があるため、今回は明示的に接続をオープンします。
(2)今回はVPDの機能を使用して、「Deptno=10」の情報だけを表示するために、OracleConnectionのClientIdプロパティに「D10」をセットします。
(3)DataSetをクリアしておきます。
(4)OracleDataAdapterのFillメソッドを用い、DataSetにデータを格納します。DataSetは型付DataSetとして定義されていますので、このように直接DataTableを指定することも可能です。
(5)DataGridにDataSetをバインドします。
(6)接続を明示的にクローズします。
ここで手動で行うコーディングはたったの6行です。ODTを使用しない場合、ODP.NETのプロパティでの設定や多くの手動でのコーディングが発生しますので、ODTの自動コード生成機能による作業の効率化を実感することができます。
コーディングが終わったら、アプリケーションをビルドして開始してみましょう(図12)。
今回、ClientIdパラメータに「D10」を設定しているため、EMP_VPD表のDEPTNO列の値が10のものだけが表示されていることが確認できます。もちろん、このサンプルアプリケーションからデータベースへ投げられるクエリに、WHERE句はありません。ClientIdの値を変更することによって、アプリケーションとしてはまったく同じクエリを投げているにもかかわらず、ClientIdの値によって適切な結果をOracleデータベースが返していることが分かると思います。(次ページへ続く)
Copyright © ITmedia, Inc. All Rights Reserved.