検索
連載

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

本記事では、Oracleが提供する.NETプラットフォーム開発向けのミドルウェアやツールを使って、.NET環境でOracleアプリケーション開発を効率的に行うためのノウハウを解説する。(編集部)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

DataSetの作成

 Oracleエクスプローラから表をドラッグ&ドロップするだけでは、DataSetは作成されません。ただ、DataSetの作成もODTの機能を使用することで、簡単に行うことができます。

 DataSetには型付DataSetと型なしDataSetが存在します。型付DataSetはあらかじめスキーマ定義を行う必要があるため、手動での作成はやや面倒です。ただし、パフォーマンスや、開発効率という点からDataSetはできる限り型付DataSetとして作成することが望ましいとされています。ODTを使用すると、この型付DataSetを簡単に作成できます。

手順1

 すでに作成されているOracleDataAdapterコンポーネントを右クリックし、「DataSetを生成...」をクリックします(図7)。

図7 DataSetの生成
図7 DataSetの生成
メモ:自動コード生成の際に、パスワードを保存していない場合、パスワード入力ダイアログが表示されます。

 これによって、型付DataSetが作成されます(図8)。

図8 生成されたDataSet
図8 生成されたDataSet

手順2

 ここで作成されるDataSetは、型付DataSetなので、スキーマ定義も自動的に作成されます。スキーマ定義を確認するには、作成されたDataSetを右クリックして、「スキーマの表示...」をクリックします(図9)。

図9 スキーマ定義の表示
図9 スキーマ定義の表示

 スキーマ定義がグラフィカルに表示されます(図10)。EMP_VPD表は、DataSet内でEmpVpdという名前のDataTableとして定義されています。

図10 データセットのスキーマ定義
図10 データセットのスキーマ定義

 スキーマ定義はXMLスキーマ定義言語(XSD)で定義されています。スキーマ定義ファイルをXML形式で表示することも可能です(図11)。

図11 DataSetのスキーマ定義(XML形式)
図11 DataSetのスキーマ定義(XML形式)

まずはデータを表示してみよう

 今回のサンプル・アプリケーションは最終的に社員名によるデータ検索、データの更新までを行えるものになりますが、まずは、DataGridにデータを表示するところから始めてみましょう。検索ボタンをダブルクリックして、以下のようにコーディングします。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

(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の自動コード生成機能による作業の効率化を実感することができます。

メモ:ClientIdの設定などは行わず、ただデータを表示するだけならば、Fillメソッドの実行を行うコードを1行記述するだけで実現可能です。

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

図12 データの表示
図12 データの表示

 今回、ClientIdパラメータに「D10」を設定しているため、EMP_VPD表のDEPTNO列の値が10のものだけが表示されていることが確認できます。もちろん、このサンプルアプリケーションからデータベースへ投げられるクエリに、WHERE句はありません。ClientIdの値を変更することによって、アプリケーションとしてはまったく同じクエリを投げているにもかかわらず、ClientIdの値によって適切な結果をOracleデータベースが返していることが分かると思います。(次ページへ続く)

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る