.NET Framework データ プロバイダ (ADO.NET)
更新 : November 2007
.NET Framework データ プロバイダは、データベースに接続して、コマンドを実行したり、結果を取得したりする目的で使用されます。その結果は直接処理されるか、DataSet に格納されます。後者の場合、ユーザーは、取得したデータセットをさまざまなソースのデータと組み合わせたり、層間でリモート処理したりするために使用できます。軽量な .NET Framework データ プロバイダでは、データ ソースとコード間に形成される層が最小限で済むため、機能を犠牲にすることなくパフォーマンスを高めることができます。
次の表に、.NET Framework に含まれているデータ プロバイダを示します。
.NET Framework データ プロバイダ |
説明 |
---|---|
.NET Framework Data Provider for SQL Server |
バージョン 7.0 以降の Microsoft SQL Server にデータ アクセスを提供します。System.Data.SqlClient 名前空間を使用してください。 |
.NET Framework Data Provider for OLE DB |
OLE DB を使用して公開されるデータ ソースに対応。System.Data.OleDb 名前空間を使用してください。 |
.NET Framework Data Provider for ODBC |
ODBC を使用して公開されるデータ ソースに対応。System.Data.Odbc 名前空間を使用してください。 |
.NET Framework Data Provider for Oracle |
Oracle データ ソースに対応。.NET Framework Data Provider for Oracle は、Oracle クライアント ソフトウェア バージョン 8.1.7 以降をサポートしています。System.Data.OracleClient 名前空間を使用してください。 |
EntityClient プロバイダ |
エンティティ データ モデル (EDM) アプリケーションにデータ アクセスを提供します。System.Data.EntityClient 名前空間を使用します。 |
.NET Framework Data Providers の核となるオブジェクト
.NET Framework データ プロバイダを構成する核となる 4 つのオブジェクトの概要を、次の表に示します。
オブジェクト |
説明 |
---|---|
Connection |
特定のデータ ソースへの接続を確立します。すべての Connection オブジェクトの基本クラスは DbConnection クラスです。 |
Command |
データ ソースに対してコマンドを実行します。Parameters を公開し、Connection から Transaction のスコープ内で実行できます。すべての Command オブジェクトの基本クラスは DbCommand クラスです。 |
DataReader |
データ ソースから、前方参照専用で読み取り専用のデータ ストリームを読み取ります。すべての DataReader オブジェクトの基本クラスは DbDataReader クラスです。 |
DataAdapter |
DataSet にデータ ソースのデータを読み込んだり、データ ソースの更新内容を解決したりします。すべての DataAdapter オブジェクトの基本クラスは DbDataAdapter クラスです。 |
前の表で示した核となるクラスの他に、.NET Framework データ プロバイダには次の表に示すクラスも含まれます。
オブジェクト |
説明 |
---|---|
Transaction |
データ ソースでトランザクション内にコマンドを追加します。すべての Transaction オブジェクトの基本クラスは DbTransaction クラスです。ADO.NET は、System.Transactions 名前空間のクラスを使ったトランザクションもサポートします。 |
CommandBuilder |
DataAdapter のコマンド プロパティを自動的に生成したり、ストアド プロシージャからパラメータ情報を取得したり、Command オブジェクトの Parameters コレクションにパラメータを設定したりするためのヘルパ オブジェクトです。すべての CommandBuilder オブジェクトの基本クラスは DbCommandBuilder クラスです。 |
ConnectionStringBuilder |
Connection オブジェクトが使用する接続文字列を簡単に作成および管理するためのヘルパ オブジェクトです。すべての ConnectionStringBuilder オブジェクトの基本クラスは DbConnectionStringBuilder クラスです。 |
Parameter |
コマンドやストアド プロシージャの入力パラメータ、出力パラメータ、および戻り値パラメータを定義します。すべての Parameter オブジェクトの基本クラスは DbParameter クラスです。 |
Exception |
データ ソースでエラーが検出されたときに返されます。クライアントで検出されたエラーの場合、.NET Framework データ プロバイダは .NET Framework 例外をスローします。すべての Exception オブジェクトの基本クラスは DbException クラスです。 |
Error |
データ ソースから返された警告またはエラー情報を公開します。 |
ClientPermission |
.NET Framework データ プロバイダにコード アクセス セキュリティ属性を提供します。すべての ClientPermission オブジェクトの基本クラスは DBDataPermission クラスです。 |
.NET Framework Data Provider for SQL Server (SqlClient)
.NET Framework Data Provider for SQL Server (SqlClient) は独自のプロトコルを使用して 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 プロバイダの両方をとおして 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 を使用するには、SQL Server 7.0 以降のバージョンへのアクセスが必要です。.NET Framework Data Provider for SQL Server クラスは、名前空間 System.Data.SqlClient 内に配置されます。それより前のバージョンの SQL Server の場合は、.NET Framework Data Provider for OLE DB と SQL Server OLE DB プロバイダ System.Data.OleDb を組み合わせて使用してください。
.NET Framework Data Provider for SQL Server はローカル トランザクションと分散トランザクションのどちらもサポートします。分散トランザクションの場合、既定で、.NET Framework Data Provider for SQL Server は自動的にトランザクションに参加し、トランザクションの詳細を Windows コンポーネント サービスまたは System.Transactions から取得します。詳細については、「トランザクションと同時実行 (ADO.NET)」を参照してください。
名前空間 System.Data.SqlClient をユーザーのアプリケーションにインクルードする方法を次のコード サンプルで示します。
Imports System.Data.SqlClient
using System.Data.SqlClient;
.NET Framework Data Provider for OLE DB
.NET Framework Data Provider for OLE DB (OleDb) は、COM 相互運用機能を介してネイティブ OLE DB を使用することで、データへのアクセスを可能にします。.NET Framework Data Provider for OLE DB はローカル トランザクションと分散トランザクションのどちらもサポートします。分散トランザクションの場合、既定で、.NET Framework Data Provider for OLE DB は自動的にトランザクションに参加し、トランザクションの詳細を Windows 2000 コンポーネント サービスから取得します。詳細については、「トランザクションと同時実行 (ADO.NET)」を参照してください。
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 アプリケーションのデータ ソースとして Jet を使用する必要がある場合、ASP.NET アプリケーションから Access データベースへの接続で問題が発生することがあるので注意してください。ASP.NET と Access (Jet) データベースを使用した場合の、接続の問題のトラブルシューティングについては、サポート技術情報の 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
using System.Data.OleDb;
メモ : |
---|
.NET Framework Data Provider for OLE DB を使用する場合、MDAC 2.6 以降が必要となります。MDAC のバージョンとして、MDAC 2.8 Service Pack 1 (SP1) を推奨します。MDAC 2.8 SP1 は「データ アクセスおよびストレージ デベロッパー センター」からダウンロードできます。 |
.NET Framework Data Provider for ODBC
.NET Framework Data Provider for ODBC (Odbc) は、ネイティブ ODBC ドライバ マネージャ (DM) を使用することで、データへのアクセスを可能にします。ODBC データ プロバイダはローカル トランザクションと分散トランザクションのどちらもサポートします。分散トランザクションの場合、既定で、ODBC データ プロバイダは自動的にトランザクションに参加し、トランザクションの詳細を Windows 2000 のコンポーネント サービスから取得します。詳細については、「トランザクションと同時実行 (ADO.NET)」を参照してください。
ADO.NET とのテストが完了している ODBC ドライバを次の表に示します。
ドライバ |
---|
SQL Server |
Microsoft ODBC for Oracle |
Microsoft Access ドライバ (*.mdb) |
.NET Framework Data Provider for ODBC クラスは、名前空間 System.Data.Odbc 内に配置されます。
名前空間 System.Data.Odbc をユーザーのアプリケーションにインクルードする方法を次のコード サンプルで示します。
Imports System.Data.Odbc
using System.Data.Odbc;
メモ : |
---|
.NET Framework Data Provider for ODBC を使用する場合、MDAC 2.6 以降が必要となります。MDAC 2.8 SP1 をお勧めします。MDAC 2.8 SP1 は「データ アクセスおよびストレージ デベロッパー センター」からダウンロードできます。 |
.NET Framework Data Provider for Oracle
.NET Framework Data Provider for Oracle (OracleClient) は、Oracle クライアント接続ソフトウェアを介して、Oracle データ ソースのデータへのアクセスを可能にします。このデータ プロバイダは Oracle クライアント ソフトウェア バージョン 8.1.7 以降をサポートしています。データ プロバイダはローカル トランザクションと分散トランザクションのどちらもサポートします。詳細については、「トランザクションと同時実行 (ADO.NET)」を参照してください。
.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 の両方を参照する必要があります。
名前空間 System.Data.OracleClient をユーザーのアプリケーションにインクルードする方法を次のコード サンプルで示します。
Imports System.Data
Imports System.Data.OracleClient
using System.Data;
using System.Data.OracleClient;
.NET Framework データ プロバイダの選択
アプリケーションのデザインおよびデータ ソースによっては、.NET Framework データ プロバイダを選択すると、アプリケーションのパフォーマンス、能力、および整合性が向上します。各 .NET Framework データ プロバイダが持つ利点と制限事項を次の表で説明します。
プロバイダ |
メモ |
---|---|
.NET Framework Data Provider for SQL Server |
中間層アプリケーションで Microsoft SQL Server 7.0 以降を使用する場合に推奨します。 単層アプリケーションで MSDE (Microsoft Database Engine) または SQL Server 7.0 以降を使用する場合に推奨します。 SQLOLEDB (OLE DB Provider for SQL Server) と .NET Framework Data Provider for OLE DB を併用する場合に推奨します。 SQL Server 6.5 以前では、OLE DB Provider for SQL Server を .NET Framework Data Provider for OLE DB と組み合わせて使用する必要があります。 |
.NET Framework Data Provider for OLE DB |
中間層アプリケーションで SQL Server 6.5 以前を使用する場合に推奨します。 SQL Server 7.0 以降のバージョンでは、.NET Framework Data Provider for SQL Server を推奨します。 単層アプリケーションで Microsoft Access データベースを使用する場合にも推奨します。Access データベースを中間層アプリケーションで使用することはお勧めできません。 |
.NET Framework Data Provider for ODBC |
中間層アプリケーションおよび単層アプリケーションで ODBC データ ソースを使用する場合に推奨します。 |
.NET Framework Data Provider for Oracle |
中間層アプリケーションおよび単層アプリケーションで Oracle データ ソースを使用する場合に推奨します。 |
EntityClient プロバイダ
EntityClient プロバイダは、エンティティ データ モデル (EDM) に基づくデータ アクセスで使用されます。他の .NET Framework データ プロバイダとは異なり、データ ソースと直接やり取りしません。代わりに Entity SQL を使用して、基になるデータ プロバイダと通信します。詳細については、「EntityClient and Entity SQL」を参照してください。