.NET Framework データ プロバイダ
.NET Framework データ プロバイダは、データベースと接続したり、コマンドを実行したり、結果を取得したりする場合に使用されます。この結果は直接処理されるか、ADO.NET DataSet 内に配置されます。ADO.NET DataSet 内に配置された結果は、ユーザーに暫定的に公開したり、複数のソースからのデータと組み合わせたり、層間でリモート処理したりするために使用されます。.NET Framework データ プロバイダは軽量になるようにデザインされているため、データ ソースと作成したコード間に作成される層が最小になり、機能に制限を付けることなくパフォーマンスが向上します。
.NET Framework データ プロバイダを構成する核となる 4 つのオブジェクトの概要を次の表に示します。
オブジェクト | 説明 |
---|---|
Connection | 特定のデータ ソースへの接続を確立します。 |
Command | データ ソースに対してコマンドを実行します。Parameters は公開されており、Connection から Transaction の範囲内で実行できます。 |
DataReader | データ ソースから、前方専用で読み取り専用のデータ ストリームを読み取ります。 |
DataAdapter | DataSet にデータ ソースのデータを読み込んだり、データ ソースの更新内容を解決したりします。 |
.NET Framework には、.NET Framework Data Provider for SQL Server (Microsoft SQL Server バージョン 7.0 以降)、.NET Framework Data Provider for OLE DB、および .NET Framework Data Provider for ODBC が含まれます。
メモ .NET Framework Data Provider for ODBC は、.NET Framework Version 1.0 には同梱されていません。.NET Framework Version 1.0 を使用していて、ODBC .NET Data Provider が必要な場合は、https://www.microsoft.com/downloads/search.asp?LangID=13&LangDIR=JA からダウンロードできます。ダウンロードされた .NET Framework Data Provider for ODBC の名前空間は Microsoft.Data.Odbc です。
.NET Framework Data Provider for SQL Server
.NET Framework Data Provider for SQL Server は独自のプロトコルを使用して SQL Server と通信します。これは軽量で高速に動作します。OLE DB または ODBC (Open Database Connectivity) 層を追加しなくても、直接 SQL Server にアクセスするように最適化されているためです。.NET Framework Data Provider for SQL Server と .NET Framework Data Provider for OLE DB の対比を次の図に示します。.NET Framework Data Provider for OLE DB は、接続プール機能とトランザクション サービスを提供する OLE DB Service コンポーネントと、データ ソース用の OLE DB Provider の両方をとおして OLE DB データ ソースと通信します。
メモ .NET Framework Data Provider for ODBC は、.NET Framework Data Provider for OLE DB と似たアーキテクチャを持っています。たとえば、ODBC Service コンポーネントへの呼び出しを行います。
.NET Framework Data Provider for SQL Server と .NET Framework Data Provider for OLE DB の比較
.NET Framework Data Provider for SQL Server を使用するには、Microsoft SQL Server 7.0 以降へのアクセス権限が必要です。.NET Framework Data Provider for SQL Server クラスは、名前空間 System.Data.SqlClient の中に配置されます。以前のバージョンの Microsoft SQL Server の場合には、.NET Framework Data Provider for OLE DB と SQLOLEDB (SQL Server OLE DB Provider) を併用します。
.NET Framework Data Provider for SQL Server はローカル トランザクションと分散トランザクションのどちらもサポートします。分散トランザクションの場合、既定で、.NET Framework Data Provider for SQL Server は自動的にトランザクションに参加し、トランザクションの詳細を Windows 2000 のコンポーネント サービスから取得します。詳細については、「トランザクションの実行」を参照してください。
名前空間 System.Data.SqlClient をユーザーのアプリケーションにインクルードする方法を次のコード例で示します。
Imports System.Data.SqlClient
[C#]
using System.Data.SqlClient;
.NET Framework Data Provider for SQL Server を使用するためには、MDAC (Microsoft Data Access Components) のバージョン 2.6 以降をインストールする必要があります。
.NET Framework Data Provider for OLE DB
.NET Framework Data Provider for OLE DB は、COM 相互運用機能を通じてネイティブな OLE DB を使用することで、データへのアクセスを可能にします。.NET Framework Data Provider for OLE DB はローカル トランザクションと分散トランザクションのどちらもサポートします。分散トランザクションの場合、既定で、.NET Framework Data Provider for OLE DB は自動的にトランザクションに参加し、トランザクションの詳細を Windows 2000 のコンポーネント サービスから取得します。詳細については、「トランザクションの実行」を参照してください。
.NET Framework Data Provider for OLE DB を使用するためには、「.NET Framework Data Provider for OLE DB が使用する OLE DB インターフェイス」に一覧表示される OLE DB インターフェイスをサポートした OLE DB プロバイダを使用する必要があります。
ADO.NET とのテストが完了しているプロバイダを次の表に示します。
ドライバ | プロバイダ |
---|---|
SQLOLEDB | Microsoft OLE DB Provider for SQL Server |
MSDAORA | Microsoft OLE DB Provider for Oracle |
Microsoft.Jet.OLEDB.4.0 | OLE DB Provider for Microsoft Jet |
**メモ **ASP.NET アプリケーションなどのマルチスレッド アプリケーションのデータ ソースとして Access (Jet) データベースを使用することはお勧めできません。ASP.NET アプリケーションのデータ ソースとして Access を使用する必要があり、SQL Server や MSDE などを代わりに使用できない場合、ASP.NET アプリケーションから Access データベースへの接続で、セキュリティ アクセス許可に関連する問題が発生することがあるので注意してください。ASP.NET と Access データベースを使用した場合の、接続の問題のトラブルシューティングについては、https://support.microsoft.com でサポート技術情報の Q316675、「[PRB] ASP.NET から Access データベースに接続できない」を参照してください。
.NET Framework Data Provider for OLE DB は OLE DB バージョン 2.5 のインターフェイスをサポートしていません。OLE DB 2.5 インターフェイスのサポートを必要とする OLE DB Providers は、.NET Framework Data Provider for OLE DB と併用した場合、正しく機能しません。これには Microsoft OLE DB Provider for Exchange および Microsoft OLE DB Provider for Internet Publishing が含まれます。
.NET Framework Data Provider for OLE DB と OLE DB Provider for ODBC (MSDASQL) は併用できません。ADO.NET を使用して ODBC データ ソースにアクセスするには、.NET Framework Data Provider for ODBC を使用してください。
.NET Framework Data Provider for OLE DB クラスは、名前空間 System.Data.OleDb 内に配置されます。名前空間 System.Data.OleDB をユーザーのアプリケーションにインクルードする方法を次のコード例で示します。
Imports System.Data.OleDb
[C#]
using System.Data.OleDb;
.NET Framework Data Provider for OLE DB を使用する場合は、MDAC 2.6 以降をインストールしてください。
.NET Framework Data Provider for ODBC
.NET Framework Data Provider for ODBC は、COM 相互運用機能を通じてネイティブな ODBC ドライバ マネージャ (DM) を使用することで、データへのアクセスを可能にします。ODBC データ プロバイダはローカル トランザクションと分散トランザクションのどちらもサポートします。分散トランザクションの場合、既定で、ODBC データ プロバイダは自動的にトランザクションに参加し、トランザクションの詳細を Windows 2000 のコンポーネント サービスから取得します。詳細については、「トランザクションの実行」を参照してください。
ADO.NET とのテストが完了している ODBC プロバイダを次の表に示します。
ドライバ |
---|
SQL Server |
Microsoft ODBC for Oracle |
Microsoft Access ドライバ (*.mdb) |
.NET Framework Data Provider for ODBC クラスは、名前空間 System.Data.Odbc 内に配置されます。
メモ .NET Framework Data Provider for ODBC は、.NET Framework Version 1.0 には同梱されていません。.NET Framework Version 1.0 を使用していて、ODBC .NET Data Provider が必要な場合は、https://www.microsoft.com/downloads/search.asp?LangID=13&LangDIR=JA からダウンロードできます。ダウンロードされた .NET Framework Data Provider for ODBC の名前空間は Microsoft.Data.Odbc です。
名前空間 System.Data.Odbc をユーザーのアプリケーションにインクルードする方法を次のコード例で示します。
Imports System.Data.Odbc
[C#]
using System.Data.Odbc;
.NET Framework Data Provider for ODBC を使用する場合は、MDAC 2.6 以降をインストールしてください。MDAC 2.7 をインストールすることをお勧めします。
.NET Framework Data Provider for Oracle
.NET Framework Data Provider for Oracle は、Oracle クライアント接続ソフトウェアを通じて、Oracle データ ソースのデータへのアクセスを可能にします。このデータ プロバイダは Oracle クライアント ソフトウェア バージョン 8.1.7 以降をサポートしています。このデータ プロバイダはローカル トランザクションと分散トランザクションのどちらもサポートします。自動的に既存の分散トランザクションに参加しますが、EnlistDistributedTransaction メソッドは現在サポートされていません。詳細については、「トランザクションの実行」を参照してください。
.NET Framework Data Provider for Oracle を使用して Oracle データ ソースに接続する前に、Oracle クライアント ソフトウェア (バージョン 8.1.7 以降) をシステムにインストールする必要があります。
.NET Framework Data Provider for Oracle クラスは、名前空間 System.Data.OracleClient 内に配置され、System.Data.OracleClient.dll アセンブリに格納されます。このデータ プロバイダを使用するアプリケーションをコンパイルする場合は、System.Data.dll と System.Data.OracleClient.dll の両方を参照する必要があります。
メモ .NET Framework Data Provider for Oracle は、.NET Framework Version 1.0 には同梱されていません。.NET Framework Version 1.0 を使用していて、.NET Framework Data Provider for Oracle が必要な場合は、https://www.microsoft.com/downloads/search.asp?LangID=13&LangDIR=JA からダウンロードできます。
名前空間 System.Data.OracleClient をユーザーのアプリケーションにインクルードする方法を次のコード例で示します。
Imports System.Data.OracleClient
[C#]
using System.Data.OracleClient;
.NET Framework Data Provider for Oracle を使用する場合は、MDAC 2.6 以降をインストールしてください。
.NET Framework データ プロバイダの選択
アプリケーションのデザインおよびデータ ソースによっては、.NET Framework データ プロバイダを選択すると、アプリケーションのパフォーマンス、能力、および整合性が向上します。各 .NET Framework データ プロバイダが持つ利点と制限事項を次の表で説明します。
プロバイダ | メモ |
---|---|
.NET Framework Data Provider for SQL Server | 中間層アプリケーションで Microsoft SQL Server 7.0 以降を使用する場合に推奨します。
単層アプリケーションで MSDE (Microsoft Data Engine) または Microsoft SQL Server 7.0 以降を使用する場合に推奨します。 SQLOLEDB (OLE DB Provider for SQL Server) と .NET Framework Data Provider for OLE DB を併用する場合に推奨します。 Microsoft SQL Server のバージョンが 6.5 以前の場合、OLE DB Provider for SQL Server と .NET Framework Data Provider for OLE DB を併用する必要があります。 |
.NET Framework Data Provider for OLE DB | 中間層アプリケーションで、Microsoft SQL Server 6.5 以前、または OLE DB インターフェイスをサポートする任意の OLE DB プロバイダを使用する場合に推奨します (このとき OLE DB 2.5 のインターフェイスは不要です)。OLE DB インターフェイスの一覧は、「.NET Framework Data Provider for OLE DB が使用する OLE DB インターフェイス」に表示されています。
Microsoft SQL Server 7.0 以降の場合、.NET Framework Data Provider for SQL Server を推奨します。 単層アプリケーションで Microsoft Access データベースを使用する場合に推奨します。Microsoft Access データベースを中間層アプリケーションで使用することはお勧めできません。 |
.NET Framework Data Provider for ODBC | 中間層アプリケーションで ODBC データ ソースを使用する場合に推奨します。
単層アプリケーションで ODBC データ ソースを使用する場合に推奨します。 メモ .NET Framework Data Provider for ODBC は、.NET Framework Version 1.0 には同梱されていません。.NET Framework Version 1.0 を使用していて、ODBC .NET Data Provider が必要な場合は、https://www.microsoft.com/downloads/search.asp?LangID=13&LangDIR=JA からダウンロードできます。ダウンロードされた .NET Framework Data Provider for ODBC の名前空間は Microsoft.Data.Odbc です。 |
.NET Framework Data Provider for Oracle | 中間層アプリケーションで Oracle データ ソースを使用する場合に推奨します。
単層アプリケーションで Oracle データ ソースを使用する場合に推奨します。 Oracle クライアント ソフトウェア バージョン 8.1.7 以降をサポートしています。 .NET Framework Data Provider for Oracle クラスは、名前空間 System.Data.OracleClient 内に配置され、System.Data.OracleClient.dll アセンブリに格納されます。このデータ プロバイダを使用するアプリケーションをコンパイルする場合は、System.Data.dll と System.Data.OracleClient.dll の両方を参照する必要があります。 メモ .Net Managed Provider for Oracle (日本語版) は、.NET Framework Version 1.0 には同梱されていません。.NET Framework Version 1.0 を使用していて、.Net Managed Provider for Oracle (日本語版) が必要な場合は、https://www.microsoft.com/downloads/search.asp?LangID=13&LangDIR=JA からダウンロードできます。 |
参照
ADO.NET の概要 | ADO.NET のアーキテクチャ | .NET Framework データ プロバイダによるデータのアクセス