このチュートリアルでは、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で入手し、インストールしていること。 |
|
新規プロジェクトを作成するには、以下の手順を実行します。
| 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を閉じます。
|
このチュートリアルで学習した内容は、次のとおりです。
| プロジェクトの作成と参照の追加 | ||
| データベースからのデータの取得 | ||
| インタラクティブ・コントロールとエラー処理の組込み | ||
| 複数の列や行の取得 | ||