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

この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
注意 ADO および ADO MD は、Microsoft .NET Framework 環境で十分にはテストされていません。特に、サービスベースのアプリケーションまたはマルチスレッド アプリケーションでは、断続的に問題が発生することがあります。この資料に記載されている技術は、ADO.NET への移行中に一時的な手段として使用するためだけに使用してください。この技術を使用する前に、十分なテストを行って互換性の問題がないことを確認する必要があります。この方法で ADO または ADO MD を使用することによって発生した問題は、一切サポートされません。詳細については、次のサポート技術情報を参照してください。
840667 .NET Framework アプリケーションで ADO および ADO MD を使用したときに予期しないエラーが発生する

この資料の内容

概要
この資料では、小さなコンソール アプリケーションを作成する方法を説明します。この資料で作成するアプリケーションでは、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.adUseClientrs.CursorType = ADODB.CursorTypeEnum.adOpenStaticrs.LockType = ADODB.LockTypeEnum.adLockBatchOptimistic						
    注: このコードは、レガシ ADO ではよく使用されるコードです。ただし、ここでは、.NET からこのコードを使用します。
  8. 次のように、アドホック SQL ステートメントと接続オブジェクトを渡すことにより、レコードセットを開きます。
    rs.Open("select * from products", cn)					
  9. レコードセットへの接続を切断し、接続を閉じます。
    rs.ActiveConnection = Nothingcn.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 SubEnd 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 サイトを参照してください。 高度な COM 相互運用機能の詳細については、次のマイクロソフト Web サイトを参照してください。先頭に戻る
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:315974 - 最終更新日: 12/07/2015 08:37:47 - リビジョン: 1.0

Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbnosurvey kbarchive kbhowtomaster kbinfo KB315974
フィードバック