Visual Basic .NET で ADO レコードセットを使用する方法

文書翻訳 文書翻訳
文書番号: 315974 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料では、小さなコンソール アプリケーションを作成する方法を説明します。この資料で作成するアプリケーションでは、COM 相互運用機能を使用して、以前のバージョン ("レガシ") の ADO レコードセットを作成し、作成された ADO レコードセットを ADO.NET データセットに変換した後、レコード数を表示します。Microsoft Visual Studio .NET から COM コンポーネントを使用することがいかに簡単かがわかります。

要件

この資料に記載されている手順を実行するための要件を以下に示します。
  • .NET Framework がインストールされている Microsoft Windows 2000 Professional (または Windows 2000 Server) または Microsoft Windows XP Professional ベースのシステム
  • ADO および ADO.NET についての一般的な知識

Visual Studio .NET からの COM コンポーネントの使用

  1. Visual Studio .NET を起動します。
  2. [スタート] ページの [新しいプロジェクト] をクリックします。[新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] で [Visual Basic プロジェクト] をクリックし、[テンプレート] で [コンソール アプリケーション] をクリックします。アプリケーションに ComDemo という名前を付けて [OK] をクリックします。
  3. プロジェクトが作成されたら、ソリューション エクスプローラーが表示されていることを確認します。ソリューション エクスプローラーが表示されていない場合は、Ctrl + Alt + L キーを押します。
  4. Sub Main() にコードを追加する前に、使用する COM コンポーネントへの参照を追加します。ソリューション エクスプローラーで、[ComDemo] の下の [参照設定] を右クリックし、[参照の追加] をクリックします。[COM] タブで、[Microsoft ActiveX Data Objects 2.5 Library] をクリックし、[選択] をクリックします。選択したコンポーネントが [選択されたコンポーネント] ボックスの一覧に表示されているのを確認し、[OK] をクリックします。この手順を実行すると、Web アプリケーションの [参照設定] の下に [ADODB] が表示されます。
  5. Module1.vb がエディター ウィンドウに表示されます。Module1.vb がエディター ウィンドウで開かれていない場合は、ソリューション エクスプローラーで Module1.vb をダブルクリックします。レガシ ADO コンポーネントへの参照を追加したことで、レガシ ADO コンポーネント機能をすべて使用できます。また、Visual Studio .NET で提供されている IntelliSense では COM オブジェクトが完全にサポートされます。
  6. 最初の数行のコードで接続が作成され、確立されます。モジュールの Sub Main() の行のすぐ下に以下のコードを入力します。

    : Uid <username> には、データベースに対してこの操作を実行するのに必要な権限が付与されている必要があります。

    Dim cn As New ADODB.Connection()
    cn.ConnectionString = "provider=sqloledb;server=localhost;database=northwind;uid=<username>"
    cn.Open()
    					
  7. 次に、cursor プロパティと lock プロパティを設定して、ADO レコードセットのインスタンスを作成します。ADO レコードセットのインスタンスを作成するには、手順 6. で入力したコードに以下のコードを追加します。
    Dim rs As New ADODB.RecordSet()
    rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient
    rs.CursorType = ADODB.CursorTypeEnum.adOpenStatic
    rs.LockType = ADODB.LockTypeEnum.adLockBatchOptimistic
    						
    注: このコードは、レガシ ADO ではよく使用されるコードです。ただし、ここでは、.NET からこのコードを使用します。
  8. 次のように、アドホック SQL ステートメントと接続オブジェクトを渡すことにより、レコードセットを開きます。
    rs.Open("select * from products", cn)
    					
  9. レコードセットへの接続を切断し、接続を閉じます。
    rs.ActiveConnection = Nothing
    cn.Close()
    					
  10. これで、レコードセットは切断されました。もう少し処理を追加して、.NET アプリケーションでレコードセットを完全に使用できるようにします。これを行うには、OleDbDataAdapter クラスを使用して、レコードセットを ADO.NET データセットに変換します。
    Dim da As New System.Data.OleDb.OleDbDataAdapter()
    Dim ds As New DataSet()
    da.Fill(ds, rs, "products")
    					
  11. 最後に、以下の 2 行をコードの最後の部分に追加して、データセットの合計行数をコンソールに出力します。
    Console.Write("There are " & ds.Tables(0).Rows.Count.ToString & " total products.")
    Console.ReadLine()
    					

完全なコード リスト (Module1.vb)

Module Module1

    Sub Main()
        Dim cn As New ADODB.Connection()
        cn.ConnectionString = "provider=sqloledb;server=(localhost);database=northwind;uid=<username>"
        cn.Open()

        Dim rs As New ADODB.RecordSet()
        rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient
        rs.CursorType = ADODB.CursorTypeEnum.adOpenStatic
        rs.LockType = ADODB.LockTypeEnum.adLockBatchOptimistic
        rs.Open("select * from products", cn)
        rs.ActiveConnection = Nothing
        cn.Close()

        Dim da As New System.Data.OleDb.OleDbDataAdapter()
        Dim ds As New DataSet()
        da.Fill(ds, rs, "products")

        Console.Write("There are " & ds.Tables(0).Rows.Count.ToString & " total products.")
        Console.ReadLine()
    End Sub

End Module
				

動作の検証

  1. F5 キーを押してデバッグ モードでアプリケーションを実行します。
  2. 数秒後、次のように表示されます。
    There are 77 total products.
    注: Northwind データベースに変更を加えた場合、表示される数値は異なります。
  3. Enter キーを押してコンソール アプリケーションを終了し、Visual Studio .NET に戻ります。

トラブルシューティング

このアプリケーションを実行するには、環境に応じて、接続文字列、特にサーバー名を変更する必要があります。また、通常 .NET アプリケーションでは provider=sqloledb は必要ありませんが、この場合、.NET の既定ではレガシ ADO の ODBC が使用されるため、provider=sqloledb が必要です。

関連情報

.NET Framework への COM コンポーネントの公開に関する詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/ja-jp/library/z6tx9dw3(vs.71).aspx
高度な COM 相互運用機能の詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/ja-jp/library/bd9cdfyx(vs.71).aspx
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。

プロパティ

文書番号: 315974 - 最終更新日: 2014年1月27日 - リビジョン: 1.0
この資料は以下の製品について記述したものです。
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
キーワード:?
kbhowtomaster kbinfo KB315974
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com