このチュートリアルでは、Oracle Database内のデータにアクセスするために、Oracle Data Provider for .NETを使用する.NETアプリケーションを作成する方法について説明します。
約30分
.NETアプリケーションでは、Oracleの基本的なクライアント接続ソフトウェアに加えて、マネージド・データ・プロバイダ (ここでの"マネージド"とは、.NETフレームワークで管理されるコードを指します)を使用する必要があります。データ・プロバイダは、.NETアプリケーション・コードとOracleクライアント接続ソフトウェアの間のレイヤーです。
Oracle Data Provider for .NET(ODP.NET)は、Oracleの高性能なADO.NET 2.0に準拠したデータ・プロバイダであり、Oracle Real Application Clusters、Oracle XML DB、Oracle Advanced Securityをはじめとした、Oracle固有の機能およびチューニング・オプションの一式を公開します。これは、Oracle Technology NetworkのWebサイトから無償でダウンロードできます。
ODP.NETおよびその他に必要なOracleクライアント接続ソフトウェアがインストールされると、Visual Studioを使用したアプリケーションの開発を始めることができます。開発を始める前に、クライアントの接続性を確認することを推奨します。Visual Studioと同じマシンでSQL*Plusを使用してOracleに接続できる場合は、Oracleのクライアント側ソフトウェアは正しくインストールされ、設定されていることになります。
このチュートリアルを始める前に以下のことを確認してください。
|
. |
Microsoft Visual Studio 2010をインストールしていること |
|---|---|
|
. |
Oracle Database 9.2以上またはOracle Database XEをインストールしていること |
|
. |
Oracle 11g Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studioバージョン11.2.0.1.2以降を、OTNから入手し、インストールしていること |
Visual Studioに新しいプロジェクトを作成するには、以下の手順を実行します。
|
. |
Windowsのプログラム・メニューから、Visual Studioを起動します。Fileメニューから、「New Project」を選択します。
|
|---|---|
|
. |
Project typesリストから、「Visual Basic:「Windows」を選択します。テンプレート「Windows Form Application」を選択します。Nameフィールドに、OraWinAppと入力します。Locationフィールドで、ファイルを保存するディレクトリを指定します。(注:ディレクトリが存在しない場合は、作成されます)。「OK」をクリックします。
|
|
. |
プロジェクトが作成されました。Viewメニューから、「Solution Explorer」を選択してSolution Explorerを開きます(まだ開いていない場合)。
|
プロジェクトはOracleデータベースにアクセスする必要があるため、データ・プロバイダを含んでいるdllへの参照を追加する必要があります。以下の手順を実行します。
|
. |
Projectメニューから、「Add Reference...」を選択します。
|
|---|---|
|
. |
コンポーネント名のリストを下方向にスクロールして、「Oracle.DataAccess」を選択します。「OK」をクリックします。
|
データベースからデータを取得するために、フォームにいくつかのコントロールを追加できます。以下の手順を実行します。
|
. |
Viewメニューから「Toolbox」を選択します。ツールボックスが表示されます。「Common Controls」を開きます。
|
|---|---|
|
. |
「Button」コントロールをForm1キャンバスにドラッグします。
キャンバスにコントロールが表示されます。ラベルも作成する必要があります。
|
|
. |
ツールボックスから、「Label」コントロールをForm1キャンバスにドラッグします。
|
|
. |
「Button1」をダブルクリックして、コード・ウィンドウを開きます。Form1.vbコード・ウィンドウが開きます。
|
|
. |
以下のVB.NET Imports文を、Public Class宣言の前に追加します。 Imports System.Data
|
|
. |
以下のVB.NETコードを、Private Sub文とEnd Sub文の間に追加します。 Dim oradb As String = "Data Source=orcl;User Id=hr;Password=hr;"
|
|
. |
「Build」→「Build OraWinApp」を選択します。
Outputウィンドウで、エラーがないことを確認します。これで、フォームを実行できます。
|
|
. |
「Debug」→「Start Without Debugging」の順に選択します。
|
|
. |
フォームが表示されます。「button1」をクリックします。
結果がラベルに表示されます。コード内の問合せは、部門IDが10の部門名を表示するためのものだったので、結果はAdministration部門になります。Form1を閉じます。
|
ハードコードされた問合せを実行する代わりに、テキストボックス・コントロールを追加して、ユーザーが入力する部門IDを受け入れることができます。以下の手順を実行します。
|
. |
「Form1.vb [Design]」タブを選択します。ツールボックスから、「TextBox」コントロールをForm1キャンバスにドラッグします。
テキスト・ボックスが表示されます。このボックスは、好きな場所にドラッグできます。
|
|---|---|
|
. |
「Label」コントロールをForm1キャンバスにドラッグします。
|
|
. |
ラベルが表示されます。「Label2」を右クリックして、「Properties」を選択します。
|
|
. |
Propertiesシートで、TextプロパティをEnter Department ID:に変更します。
|
|
. |
「Form1.vb」タブを選択します。
|
|
. |
バインド変数を使用して、テキスト・ボックスの値をSELECT文の一部に含めます。バインド変数を使用すると、テキスト・ボックスの値が変わるたびにデータベースでSQL文を再解析する必要がなくなるので、パフォーマンスが向上します。 次のコードをconn.Open()文のすぐ後に追加します。 Dim parm As New OracleParameter
|
|
. |
cmd.Parameters文をcmd.Connection文のすぐ後に追加します。 cmd.Parameters.Add(parm)
|
|
. |
cmd.CommandText文のコードを次のように変更します。 cmd.CommandText = "select department_name from departments where department_id = :1"
|
|
. |
「Build」→「Rebuild OraWinApp」を選択します。
Outputウィンドウでエラーがないことを確認します。エラーも警告もない場合は、次の手順に進みます。
|
|
. |
「Debug」→「Start Without Debugging」の順に選択します。
|
|
. |
Department IDに20と入力して、「button1」をクリックします。
|
|
. |
Label1が部門名に変わることを確認します。部門名は、Department IDフィールドに入力した値によって異なります。
|
|
. |
Department IDに300と入力して、「button1」をクリックします。
|
|
. |
IDが300の部門はないため、今回はエラーが表示されます。「Quit」をクリックします。次のトピックでは、エラー処理を追加して、エラーが発生した理由を正確に把握できるようにします。
|
エラー処理は、特定の機能が正常に動作していない場合に、その理由をユーザーに知らせるために必要となります。このトピックでは、無効なDepartment IDを指定したときに、エラーが発生しないようにコードを変更します。このチュートリアルでは、非常にシンプルなエラー処理コードを追加します。より堅牢なエラー処理を行うには、構造化例外処理を使用する必要があります。ODP.NETを使用した構造化例外処理について、詳しくはODP.NETオンライン・ドキュメントを参照してください。以下の手順を実行します。
|
. |
Form1.csウィンドウで、次のコードを変更します。 dr.Read()
label1.Text = dr.Item("department_name");
次のとおりに変更します。 If dr.Read() Then
Label1.Text = dr.Item("department_name")
Else
Label1.Text = "Department ID not found"
End If
|
|---|---|
|
. |
「Build」→「Rebuild OraWinApp」を選択します。出力ウィンドウでエラーがないことを確認します。
|
|
. |
「Debug」→「Start Without Debugging」の順に選択します。
|
|
. |
Department IDにもう一度300と入力して、「button1」をクリックします。
|
|
. |
今回は、Department ID not foundというメッセージが表示されます。Form1を閉じます。
|
このトピックでは、リストボックスを使用して、複数の情報セットを取得します。以下の手順を実行します。
|
. |
「Form1.vb [Design]」タブをクリックします。ツールボックスから、「Listbox」コントロールをForm 1キャンバスにドラッグします。
|
|---|---|
|
. |
フォームに新しいリストボックスが表示されます。リストボックスの配置とサイズ変更を適切に行うことができます。「Form1.vb」タブをクリックします。
|
|
. |
cmd.Parameters.Add(parm);文を削除します。
|
|
. |
次のcmd.CommandTextコードを変更します。 cmd.CommandText = "select department_name from departments where department_id = :1"; 次のとおりに変更します。 cmd.CommandText = "select department_id, department_name, city"
|
|
. |
以下の一連のコードも変更します。 If dr.Read() Then 次のとおりに変更します。 While dr.Read()
|
|
. |
「Build」→「Rebuild OraWinApp」を選択します。
|
|
. |
「Debug」→「Start Without Debugging」の順に選択します。
|
|
. |
「button1」をクリックします。
|
|
. |
リストにすべての部門とそれぞれの場所が表示されます。Form1を閉じます。
|
このチュートリアルで学習した内容は、以下のとおりです。
![]()
|
会社情報 |オラクルとサン | |