ヘッダーをスキップ
Oracle Database 2日で.NET開発者ガイド
11gリリース2(11.2)
B56266-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

5 Oracle Developer Tools for Visual Studioの使用

この章の内容は次のとおりです。

Oracle Developer Toolsの使用

Oracle Developer Tools for Visual Studio(ODT)は、Visual Studio用に緊密に統合されたアドインです。ODTによりServer Explorerに組み込まれる拡張機能を使用することで、表、索引、制約、データ接続などのデータベース・スキーマ・オブジェクトを自動作成できます。また、アプリケーション・コードも自動生成できます。

Oracle Databaseへの接続

この項では、データベース・スキーマ・オブジェクトを自動的に作成または変更するために、Server Explorerを使用してOracle Databaseに接続する方法を説明します。

データベースに接続するには、次の手順を実行します。

  1. 「View」メニューから「Server Explorer」を選択します。

  2. Server Explorerで、「Data Connections」を右クリックします。

  3. 「Add Connection」を選択します。

    addconnection1.gifの説明が続きます。
    addconnection1.gifの説明

  4. 「Add Connection」ウィンドウが表示されたら、「Data source」に「Oracle Database (Oracle ODP.NET)」と表示されているかどうかを確認します。

    表示されている場合は、手順6に進みます。

    addconnection1a.gifの説明が続きます。
    addconnection1a.gifの説明

    「Data source」に「Oracle Database (Oracle ODP.NET)」と表示されていない場合は、「Change」を選択します。

    「Change Data Source」ウィンドウが表示されます。

    addconnection2a.gifの説明が続きます。
    addconnection2a.gifの説明

  5. 「Oracle Database」を選択してから、「Oracle Data Provider for .NET」を選択します。

  6. 「Add Connection」ウィンドウの「Connection Details」タブで、次の情報を入力します。

    Data source name: リモート・データベース・インスタンスの別名orclなどを使用します。

    同じコンピュータ上のデータベースに接続する場合は、Local Databaseを使用します。

    「Use a specific user name and password」オプションを選択します。

    「User name」HRと入力します。

    「Password」に、hrアカウントのロック解除と設定を行ったときに作成したパスワードを入力します。

    後続のセッション用にパスワードを保存するには、「Save password」ボックスを選択します。

    「Role」Defaultに設定されていることを確認します。これにより、ユーザーhrに付与されているデフォルトのロールが参照されます。

    「Connection name」「Data source name」および「User name」の値から自動生成されます。この演習では、HR.orclになります。

    addconnection2.gifの説明が続きます。
    addconnection2.gifの説明

  7. 「Apply Filters」タブをクリックし、HRスキーマが「Displayed schemas」列に含まれていることを確認します。データ接続のスキーマ・カテゴリ・ノードを開くと、「Apply Filters」タブで選択したスキーマ・オブジェクト(表、ビューなど)のみが表示されます。

    addconnection3.gifの説明が続きます。
    addconnection3.gifの説明

  8. 「Test connection」をクリックします。

    addconnection4.gifの説明が続きます。
    addconnection4.gifの説明

    テストは成功するはずです。「OK」をクリックします。

    テストが失敗した場合は、次のような問題が原因であると考えられます。後続の手順に進む前に、問題を解決する必要があります。

    • データベースが起動していない。

    • データベース・リスナーが起動していない。

    • データベース接続が正しく構成されていない。

    • ユーザー名、パスワードまたはロールが正しく入力されていない。

  9. 「Add Connection」ウィンドウで、「OK」をクリックします。

  10. Server ExplorerでHR.ORCL接続を開き、HRスキーマの内容を表示します。「Tables」、「Views」、「Procedures」、「Functions」、「Packages」、「Synonyms」、「Sequences」などが表示されます。

    addconnection5.gifの説明が続きます。
    addconnection5.gifの説明

表および表の列の作成

Oracle Developer Toolsには、データベース・オブジェクトを作成するためのユーザー・インタフェースが含まれています。この項では、DEPENDENTSという名前の表を作成します。

表を作成するには、次の手順を実行します。

  1. Server Explorerで、「Tables」を右クリックして「New Relational Table」を選択します。

    table1.gifの説明が続きます。
    table1.gifの説明

    表の設計ウィンドウが表示されます。

  2. 設計ビューで、「Table name」DEPENDENTSと入力します。

    table2.gifの説明が続きます。
    table2.gifの説明

  3. 「Column Properties」タブで、次に示す6つの列を次の方法で追加します。

    「Add」をクリックします。続いて、新しい列の情報を入力します。新しい列がすべて追加されるまで、繰り返し「Add」をクリックします。

    フィールドはデータ型によって異なる場合があります。タブ全体にアクセスするには、Server ExplorerやSolution Explorerなどのウィンドウを閉じることが必要になる場合があります。

    • 「Name」LAST_NAME「Data Type」VARCHAR2「Size」30を指定します。他のプロパティは、すべてデフォルト値のままにします。

    • 「Name」FIRST_NAME「Data Type」VARCHAR2「Size」20を指定します。他のプロパティは、すべてデフォルト値のままにします。

    • 「Name」BIRTH_DATE「Data Type」DATEを指定します。他のプロパティは、すべてデフォルト値のままにします。

    • 「Name」RELATIONSHIP「Data Type」VARCHAR2「Size」20を指定します。他のプロパティは、すべてデフォルト値のままにします。

    • 「Name」EMPLOYEE_ID「Data Type」NUMBERを指定し、「Allow null」を選択解除します。「Precision」6「Scale」0を入力します。

    • 「Name」DEPENDENT_ID「Data Type」NUMBERを指定し、「Allow null」チェック・ボックスを選択解除します。「Precision」6「Scale」0を入力します。

    table3.gifの説明が続きます。
    table3.gifの説明

  4. 「Preview SQL」をクリックします。

    表を作成するSQL文が「Preview SQL」ウィンドウに次のように表示されます。

    table4.gifの説明が続きます。
    table4.gifの説明

    「OK」をクリックして「Preview SQL」ウィンドウを閉じます。

  5. 表の設計ビューで「Save」をクリックします。

    この操作により、HRスキーマに新しい表DEPENDENTSが作成されます。新しい表がServer Explorerにリストされます。

    table5.gifの説明が続きます。
    table5.gifの説明

表の索引の作成

索引はオプションですが、非常に役立つリレーショナル・データベースの機能です。索引を使用すると表の行(またはレコード)にすばやくアクセスできます。この項では、DEPENDENTS表に索引を作成します。

索引を作成するには、次の手順を実行します。

  1. DEPENDENTSの表の設計ビューで「Indexes」タブをクリックします。

  2. 「Indexes」領域の下にある「Add」をクリックします。

    「Index Properties」領域がアクティブになります。

  3. 「Index Properties」の下(右側)にある「Name」DEPENDENTS_INDEXと入力し、他のプロパティはすべてデフォルトのままにします。

  4. 「Index Properties」領域の下部で、「Add」をクリックします。

  5. 「Index keys」の下で「Key」列の最初のセルをクリックし、リストから「DEPENDENT_ID」を選択します。

    index1.gifの説明が続きます。
    index1.gifの説明

  6. 「Preview SQL」をクリックします。

    「Preview SQL」ウィンドウが表示され、索引を作成するSQL文が表示されます。

    index2.gifの説明が続きます。
    index2.gifの説明

    「OK」をクリックして「Preview SQL」ウィンドウを閉じます。

  7. 表の設計ビューで「Save」をクリックします。

    これで、HRスキーマの表DEPENDENTSに新しい索引が作成されます。作成された索引をServer Explorerで確認するには、DEPENDENTS表および関連する索引を開きます。

    index3.gifの説明が続きます。
    index3.gifの説明

表の制約の追加

データベースで制約を使用すると、許容できるデータ値に対し、データ整合性の定義ルールが自動的に施行されます。また、この制約により、表の主キーや外部キーも実装されます。この項では、新しい表DEPENDENTSにこのような制約を追加します。

外部キーおよび主キーを追加するには、次の手順を実行します。

  1. DEPENDENTS表の設計ビューで、「Constraints」タブをクリックします。

    構成によっては、すでにデフォルトのチェック制約がリストに含まれていることがあります。

  2. 「Constraints」領域の下で、次に示す制約を次の方法で追加します。

    「Constraint Properties」の下の「Add」をクリックします。続いて、新しい制約の情報を入力します。新しい制約がすべて追加されるまで、繰り返し「Add」をクリックします。

    • 「Name」EMPLOYEES_FK「Type」Foreign Key「Table」EMPLOYEES「Constraint」EMP_EMP_ID_PKを指定します。「Association」の下で、「Referenced Column:」EMPLOYEE_ID「Local Column:」EMPLOYEE_IDを選択し、「On delete」値にCascadeを設定します。他のプロパティは、すべてデフォルト値のままにします。

      constraint1.gifの説明が続きます。
      constraint1.gifの説明

    • 「Name」DEPENDENTS_PK「Type」Primary Keyを指定します。

      「Primary key columns」領域の下で、「Add」をクリックします(下にスクロールすることが必要な場合があります)。「Primary Key Columns」の下で、「Key:」DEPENDENT_IDを選択し、「Using index」値にDEPENDENTS_INDEXを設定します。他のプロパティは、すべてデフォルト値のままにします。

      constraint2.gifの説明が続きます。
      constraint2.gifの説明

  3. 「Preview SQL」をクリックします。

    「Preview SQL」ウィンドウに、表DEPENDENTSの制約用に生成されたコードが表示されます。制約により、表のDEPENDENT_ID列とEMPLOYEE_ID列の定義が変更されるため、制約の追加にはALTER TABLEコマンドが使用されます。

    constraint3.gifの説明が続きます。
    constraint3.gifの説明

    「OK」をクリックして「Preview SQL」ウィンドウを閉じます。

  4. 表の設計ビューで「Save」をクリックします。

    この操作により、新しい2つの制約がHRスキーマのDEPENDENTS表に作成されます。Server Explorerを確認するには、表DEPENDENTSおよび制約の階層ツリーを開きます。

    constraint4.gifの説明が続きます。
    constraint4.gifの説明

表へのデータの追加

ここで、新しいDEPENDENTS表にデータを追加する必要があります。

表にデータを移入するには、次の手順を実行します。

  1. Server Explorerで、DEPENDENTS表を右クリックして「Retrieve Data」を選択します。

    retrieve1.gifの説明が続きます。
    retrieve1.gifの説明

    DEPENDENTSの表グリッドが設計ビューに表示されます。

  2. 表5-1に示す4つのレコードを、この表グリッドに追加します。

    表5-1 DEPENDENTS表の新しいデータ

    LAST_NAME FIRST_NAME BIRTH_DATE RELATIONSHIP EMPLOYEE_ID DEPENDENT_ID

    Ernst

    Mary

    06-MAY-2000

    daughter

    104

    1041

    Atkinson

    Sue

    12-JUL-1998

    daughter

    130

    1301

    Ernst

    David

    02-APR-2007

    son

    104

    1042

    Sciarra

    Aaron

    31-JAN-2008

    son

    111

    1111


    グリッドは次のようになります。

    retrieve2の説明が続きます。
    retrieve2の説明

    行を移動すると、データは自動的に保存されます。

データを表示および更新するためのコードの自動生成

DEPENDENTS表の内容を確認するために、表の単純な問合せを使用するフォームを作成します。この項では、Visual Studio統合開発環境(IDE)を使用して、操作に対応するコードを自動生成します。

新しいデータソースを作成するには、次の手順を実行します。

  1. 「新しいプロジェクトの作成」の説明に従って、新しいプロジェクトを開始します。新しいプロジェクトには、次に示す名前を付けます。

    Visual C#:

    HR_ODT_CS

    Visual Basic:

    HR_ODT_VB

  2. 「Create Directory for Solution」を選択します。「OK」をクリックします。

  3. 設計ビューが表示されていない場合は、Form1の設計ビューに切り替えます。

    注意: すべてのアプリケーションはForm1から開始しますが、これまでの章で作成したアプリケーションとの関係はありません。

  4. 「Server Explorer」ウィンドウをクリックし、「Show Data Sources」ウィンドウを有効にします。

  5. Visual Studioの「Data」メニューから「Show Data Sources」を選択します。

    「Data Source」ウィンドウが表示されます。

    datasource1.gifの説明が続きます。
    datasource1.gifの説明

  6. 「Data Sources」ウィンドウで、「Add New Data Source」をクリックします。

    「Data Source Configuration Wizard」が開きます。

  7. 「Data Source Configuration Wizard」の「Choose a Data Source Type」で「Database」を選択します。

    「Next」をクリックします。

    datasource2.gifの説明が続きます。
    datasource2.gifの説明

  8. 「Choose Your Data Connection」で、「HR.ORCL」または「HR.(Local Database)」を選択します。この例では、HR.ORCLを使用します。

    「Yes, include sensitive data in the connection string」を選択します。

    「Next」をクリックします。

    datasource3.gifの説明が続きます。
    datasource3.gifの説明

  9. 「Save the Connection String to the Application Configuration File」で、「Yes, save the connection as:」ConnectionStringを選択します。

    「Next」をクリックします。

    datasource4.gifの説明が続きます。
    datasource4.gifの説明

  10. 「Choose Your Database Objects」で、「Tables」を開きます。

    「DEPENDENTS(HR)」表を選択します。

    「DataSet name」tableDependentsに変更します。

    「Finish」をクリックします。

    datasource5.gifの説明が続きます。
    datasource5.gifの説明


    参照:

    DataSetクラスの詳細は、「Oracle Data Provider for .NETでのDataSetクラスの使用」を参照してください。

ドラッグ・アンド・ドロップでコードを自動生成するには、次の手順を実行します。

  1. Form1の設計ビューに切り替えます。

  2. 「Data Sources」ウィンドウで、「tableDependents」を開きます。

    datasource6.gifの説明が続きます。
    datasource6.gifの説明

  3. DEPENDENTS表を選択し、Form1にドラッグします。

    フォームと表グリッドの両方のサイズ調整が必要になる場合があります。

    datasource7.gifの説明が続きます。
    datasource7.gifの説明

    表グリッド(レコード・ナビゲーション要素を含む)の他に、次のコンポーネントがプロジェクトの設計ビューに追加されます。これらのオブジェクトは、Form1に自動生成されるコードを表しています。

    Visual C#:

    tableDependentsdEPENDENTSBindingSourcedEPENDENTSTableAdaptertableAdapterManagerおよびdEPENDENTSBindingNavigator

    Visual Basic:

    TableDependentsDEPENDENTSBindingSourceDEPENDENTSTableAdapterTableAdapterManagerおよびDEPENDENTSBiningNavigator

  4. Form1の上部付近にある「Save」アイコン(フロッピー・ディスク)をダブルクリックします。

    これにより、Form1の「Save」アイコンのコード・ウィンドウが開きます。

  5. プライベート・メソッドxxxSaveItem_Click()で、try...catchブロックに既存のコードをカプセル化します。この自動生成されたメソッドのVisual C#およびVisual Basicの完全な名前は、次に示すコードを参照してください。

    また、MessageBox.show()コールをTryセクションおよびCatchセクションの両方に追加します。更新したメソッド・コードを次に示します。新しいコードまたは変更されたコードは太字で表しています。

    Visual C#:

    private void dEPENDENTSBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
     try
     {
      this.Validate();
      this.dEPENDENTSBindingSource.EndEdit();
      this.tableAdapterManager.UpdateAll(this.tableDependents);
    
      MessageBox.Show("Update successful");
     }
     catch (System.Exception ex)
     {
      MessageBox.Show("Update failed: "+ ex.Message.ToString());
     }
    }
    

    Visual Basic:

    Private Sub DEPENDENTSBindingNavigatorSaveItem_Click(
     ByVal sender As System.Object, ByVal e As System.EventArgs)
     Handles DEPENDENTSBindingNavigatorSaveItem.Click
    
     Try
      Me.Validate()
      Me.DEPENDENTSBindingSource.EndEdit()
      Me.TableAdapterManager.UpdateAll(Me.TableDependents)
      MessageBox.Show("Update successful")
    
     Catch ex As Exception
      MessageBox.Show("Update failed: " + ex.Message.ToString())
    
     End Try
    
    End Sub
    
  6. アプリケーションをコンパイルして実行するには、「アプリケーションのコンパイルと実行」の手順に従います。

次の方法で、新しいアプリケーションをテストできます。フロッピー・ディスク・アイコンは、「Save」コマンドを表しています。

アプリケーションをテストするには、次の手順を実行します。

  1. Mary Ernstの「DEPENDENT_ID」の値を1110に変更し、「Save」アイコンをクリックします。メッセージ・ボックスUpdate successfulが表示されます。「OK」をクリックしてメッセージ・ボックスを閉じます。

  2. David Ernstの「EMPLOYEE_ID」の値を99999に変更し、「Save」アイコンをクリックします。「更新に失敗しました。: ORA-02291: 整合性制約(HR.EMPLOYEES_FK)に違反しました - 親キーがありません」というメッセージが表示されます。「OK」をクリックしてメッセージ・ボックスを閉じます。