Oracle Data Provider for .NET(VB Version)について

目的

このチュートリアルでは、 Oracle Database内のデータにアクセスするために、Oracle Data Provider for .NETを使用する.NETアプリケーションを作成する方法について説明します。

所要時間

約30分

トピック

このチュートリアルでは、以下のトピックについて説明します。

 概要
 前提条件
 Visual Studioのプロジェクトの作成
 参照の追加
 データベースのデータの取得
 インタラクティブ・コントロールの組込み
 エラー処理の追加
 複数の列や行の取得
 まとめ

スクリーンショットの表示

 このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。 (警告:この操作によって、同時にすべてのスクリーンショットがロードされるため、ご使用のインターネット接続によってはレスポンス時間が遅くなる場合があります。)

注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。

概要

.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のクライアント側ソフトウェアは正しくインストールされ、設定されていることになります。

トピック・リストに戻る

前提条件

このチュートリアルを始める前に以下を確認してください。

1.

Microsoft Visual Studio 2008をインストールしていること。

2.

Oracle Database 9.2以上またはOracle Database XEをインストールしていること。

3.

Oracle 11g Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studioバージョン 11.1.0.6.20以上を OTNで入手し、インストールしていること。

トピック・リストに戻る

Visual Studioのプロジェクトの作成

新規プロジェクトを作成するには、以下の手順を実行します。

1.

Windowsのプログラム・メニューから、Visual Studioを起動します。 Fileメニューから「 New Project」を選択します。

 

2.

Project typesリストから、「 Visual Basic」→「 Windows」を選択します。 テンプレート「 Windows Form Application」を選択します。 Nameフィールドに、 OraWinAppと入力します。 Locationフィールドで、ファイルを保存するディレクトリを指定します。 (注:ディレクトリが存在しない場合は、作成されます。) 「 OK」をクリックします。

 

3.

プロジェクトが作成されました。 Viewメニューから、「 Solution Explorer」を選択してSolution Explorerを開きます(まだ開いていない場合)。

 

トピック・リストに戻る

参照の追加

プロジェクトはOracleデータベースにアクセスする必要があるため、データ・プロバイダを含んでいるdllへの参照を追加する必要があります。 以下の手順を実行します。

1.

Projectメニューから、「 Add Reference...」を選択します。

Add Referenceダイアログ・ボックスが表示されます。

 

2.

コンポーネント名のリストを下方向にスクロールして、「 Oracle.DataAccess」を選択します。 「 OK」をクリックします。

 

トピック・リストに戻る

データベースのデータの取得

データベースからデータを取得するために、フォームにいくつかのコントロールを追加できます。 以下の手順を実行します。

1.

Viewメニューから「 Toolbox」を選択します。 ツールボックスが表示されます。 「 Common Controls」を開きます。

 

2.

Button」コントロールをForm1キャンバスにドラッグします。

キャンバスにコントロールが表示されます。 ラベルも作成する必要があります。

 

3.

ツールボックスから、「 Label」コントロールをForm1キャンバスにドラッグします。

 

4.

Button1」をダブルクリックして、コード・ウィンドウを開きます。 Form1.csコード・ウィンドウが開きます。

 

5.

以下のVB.NET Imports文を、Public Class宣言の前に追加します。

                               
                                 
Imports System.Data
                                                            
                                 
Imports Oracle.DataAccess.Client ' ODP.NET Oracle managed provider
Imports Oracle.DataAccess.Types
                              
                            

 

6.

以下のVB.NETコードを、Private Sub文とEnd Sub文の間に追加します。

                               
                                 
Dim oradb As String = "Data Source=orcl;User Id=hr;Password=hr;"
                                                            
                                 
Dim conn As New OracleConnection(oradb) 
conn.Open()
Dim cmd As New OracleCommand
cmd.Connection = conn
cmd.CommandText = "select department_name from departments where department_id = 10"
cmd.CommandType = CommandType.Text
                                                            
                                 
Dim dr As OracleDataReader = cmd.ExecuteReader()
dr.Read()
Label1.Text = dr.Item("department_name")
                                                            
                                 
conn.Dispose()
                              
                            

 

7.

Build」→「 Build OraWinApp」を選択します。

Outputウィンドウで、エラーがないことを確認します。 これで、フォームを実行できます。

 

8.

Debug」→「 Start Without Debugging」を選択します。

 

9.

フォームが表示されます。 「 Button1」をクリックします。

結果がラベルに表示されます。 コード内の問合せは、部門IDが10の部門名を表示するためのものだったので、結果はAdministration部門になります。 Form1を閉じます。

トピック・リストに戻る

インタラクティブ・コントロールの組込み

ハードコードされた問合せを実行する代わりに、テキストボックス・コントロールを追加して、ユーザーが入力する部門IDを受け入れることができます。以下の手順を実行します。

1.

Form1.vb [Design]」タブを選択します。 ツールボックスから、「 TextBox」コントロールをForm1キャンバスにドラッグします。

テキスト・ボックスが表示されます。 このボックスは、好きな場所にドラッグできます。

 

2.

Label」コントロールをForm1キャンバスにドラッグします。

 

3.

ラベルが表示されます。 「 Label2」を右クリックして、「 Properties」を選択します。

 

4.

Propertiesシートで、Textプロパティを Enter Department ID:に変更します。

 

5.

Form1.vb」タブを選択します。

 

6.

バインド変数を使用して、テキスト・ボックスの値をSELECT文の一部に含めます。 バインド変数を使用すると、テキスト・ボックスの値が変わるたびに、データベースでSQL文を再解析する必要がなくなるので、パフォーマンスが向上します。

次のコードを conn.Open() 文のすぐあとに追加します。

                               
                                 
                                   
Dim parm As New OracleParameter
parm.OracleDbType = OracleDbType.Decimal
parm.Value = TextBox1.Text
                                
                                     
                            

 

7.

cmd.Parameters文を cmd.Connection文のすぐあとに追加します。

                               
                                 
cmd.Parameters.Add(parm)
                                     
                            

 

8.

cmd.CommandText文のコードを次のように変更します。

cmd.CommandText = "select department_name from departments where department_id = :1"

 

9.

Build」→「 Rebuild OraWinApp」を選択します。

Outputウィンドウでエラーがないことを確認します。 エラーも警告もない場合は、次の手順に進みます。

 

10.

Debug」→「 Start Without Debugging」を選択します。

 

11.

Department IDに 20と入力して、「 Button1」をクリックします。

 

12.

Label1が部門名に変わることを確認します。 部門名は、Department IDフィールドに入力した値によって異なります。

 

13.

Department IDに 300と入力して、「 Button1」をクリックします。

 

14.

IDが300の部門はないため、今回はエラーが表示されます。「 Quit」をクリックします。 次のトピックでは、エラー処理を追加して、エラーが発生した理由を正確に把握できるようにします。

 

トピック・リストに戻る

エラー処理の追加

エラー処理は、特定の機能が正常に動作していない場合に、その理由をユーザーに知らせるために必要となります。 このトピックでは、無効なDepartment IDを指定したときに、エラーが発生しないようにコードを変更します。 このチュートリアルでは、非常にシンプルなエラー処理コードを追加します。 より堅牢なエラー処理をおこなうには、構造化例外処理を使用する必要があります。 ODP.NETを使用した構造化例外処理について、詳しくは『 ODP.NETオンライン・ドキュメント』を参照してください。 以下の手順を実行します。

1.

Form1.vbコードで、次のコードを変更します。

                               
                                 
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
                              
                            

 

2.

Build」→「 Rebuild OraWinApp」を選択します。

 

3.

Debug」→「 Start Without Debugging」を選択します。

 

4.

Department IDに再度 300と入力して、「 Button1」をクリックします。

 

5.

今回は、 Department ID not foundというメッセージが表示されます。 Form1を閉じます。

 

トピック・リストに戻る

複数の列や行の取得

このトピックでは、リストボックスを使用して、複数の情報セットを取得します。 以下の手順を実行します。

1.

Form1.vb [Design]」タブをクリックします。 ツールボックスから、「 Listbox」コントロールをForm 1キャンバスにドラッグします。

 

2.

フォームに新しいリストボックスが表示されます。 リストボックスの配置とサイズ変更を適切におこなうことができます。 「 Form1.vb」タブをクリックします。

 

3.

cmd.Parameters.Add(parm) 文を削除します。

 

4.

次の cmd.CommandText コードを変更します。

cmd.CommandText = "select department_name from departments where department_id = :1"

から

                               
                                 
cmd.CommandText = "select department_id, department_name, city" _ 
+ " from  departments d, locations l" _
+ " where d.location_id = l.location_id"
                              
                            

 

5.

以下の一連のコードも変更します。

                               
                                 
                                   
If dr.Read() Then
Label1.Text = dr.Item("department_name") 
Else 
Label1.Text = "Department ID not found" 
End If
                                
                              
                            

から

                               
                                 
While dr.Read()
ListBox1.Items.Add("The " + dr.Item(1) _
+ " department is in " + dr.Item("city"))
End While
                              
                            

 

6.

Build」→「 Rebuild OraWinApp」を選択します。

 

7.

Debug」→「 Start Without Debugging」を選択します。

 

8.

Button1」をクリックします。

 

9.

リストにすべての部門とそれぞれの場所が表示されます。 Form1を閉じます。

 

トピック・リストに戻る

まとめ

このチュートリアルで学習した内容は、次のとおりです。

 プロジェクトの作成と参照の追加
 データベースからのデータの取得
 インタラクティブ・コントロールとエラー処理の組込み
 複数の列や行の取得

トピック・リストに戻る

 このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。