.NET Framework データ プロバイダー
.NET Framework データ プロバイダーは、データベースに接続して、コマンドを実行したり、結果を取得したりする目的で使用されます。 その結果は、直接処理されるか、必要に応じてユーザーに公開されるように DataSet に格納されるか、取得したデータセットを複数のソースからのデータと組み合わせるか、または、層間でリモート処理されます。 軽量な .NET Framework データ プロバイダーでは、データ ソースとコード間に形成される層が最小限で済むため、機能を犠牲にすることなく、パフォーマンスを高めることができます。
次の表は、.NET Framework に含まれているデータ プロバイダーを一覧にしたものです。
.NET Framework データ プロバイダー | 説明 |
---|---|
.NET Framework SQL Server 用データ プロバイダー | 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 Oracle 用データ プロバイダー | Oracle データ ソースに対応。 .NET Framework Data Provider for Oracle では、Oracle クライアント ソフトウェア バージョン 8.1.7 以降がサポートされており、System.Data.OracleClient 名前空間が使用されます。 |
EntityClient プロバイダー | エンティティ データ モデル (EDM) アプリケーションにデータ アクセスを提供します。 System.Data.EntityClient 名前空間を使用してください。 |
.NET Framework Data Provider for SQL Server Compact 4.0。 | Microsoft SQL Server Compact 4.0 へのデータ アクセスが提供されます。 System.Data.SqlServerCe 名前空間を使用します。 |
.NET Framework Data Providers の核となるオブジェクト
.NET Framework データ プロバイダーを構成する核となる 4 つのオブジェクトの概要を、次の表に示します。
Object | 説明 |
---|---|
Connection |
特定のデータ ソースへの接続を確立します。 すべての Connection オブジェクトの基本クラスは DbConnection クラスです。 |
Command |
データ ソースに対してコマンドを実行します。 Parameters を公開し、 Transaction から Connection のスコープ内で実行できます。 すべての Command オブジェクトの基本クラスは DbCommand クラスです。 |
DataReader |
データ ソースから、前方参照専用で読み取り専用のデータ ストリームを読み取ります。 すべての DataReader オブジェクトの基本クラスは DbDataReader クラスです。 |
DataAdapter |
DataSet にデータ ソースのデータを読み込んだり、データ ソースの更新内容を解決したりします。 すべての DataAdapter オブジェクトの基本クラスは DbDataAdapter クラスです。 |
前の表で示した核となるクラスの他に、.NET Framework データ プロバイダーには次の表に示すクラスも含まれます。
Object | 説明 |
---|---|
Transaction |
データ ソースでトランザクション内にコマンドを追加します。 すべての Transaction オブジェクトの基本クラスは DbTransaction クラスです。 ADO.NET は、 System.Transactions 名前空間のクラスを使ったトランザクションもサポートします。 |
CommandBuilder |
DataAdapter のコマンド プロパティを自動的に生成したり、ストアド プロシージャからパラメーター情報を取得したり、 Parameters オブジェクトの Command コレクションにパラメーターを設定したりするためのヘルパー オブジェクトです。 すべての 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 または Open Database Connectivity (ODBC) 層を追加しなくても、直接 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 データ ソースとの通信が行われます。
Note
.NET Framework Data Provider for ODBC のアーキテクチャは、.NET Framework Data Provider for OLE DB に似ています。たとえば、ODBC Service コンポーネントを呼び出します。
.NET Framework Data Provider for SQL Server のクラスは、System.Data.SqlClient 名前空間にあります。
.NET Framework Data Provider for SQL Server では、ローカル トランザクションと分散トランザクションの両方がサポートされています。 分散トランザクションの場合、.NET Framework Data Provider for SQL Server は既定で、自動的にトランザクションに参加し、トランザクションの詳細を Windows コンポーネント サービスまたは System.Transactions から取得します。 詳しくは、「トランザクションとコンカレンシー」をご覧ください。
名前空間 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 コンポーネント サービスから取得します。 詳しくは、「トランザクションとコンカレンシー」をご覧ください。
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 |
Note
ASP.NET アプリケーションなどのマルチスレッド アプリケーションのデータ ソースとして、Access (Jet) データベースを使用することはお勧めできません。 ASP.NET アプリケーションのデータ ソースとして Jet を使用する必要がある場合、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 ODBC
.NET Framework Data Provider for ODBC (Odbc) は、ネイティブ ODBC ドライバー マネージャー (DM) を使用することで、データへのアクセスを可能にします。 ODBC データ プロバイダーはローカル トランザクションと分散トランザクションのどちらもサポートします。 分散トランザクションの場合、既定で、ODBC データ プロバイダーは自動的にトランザクションに参加し、トランザクションの詳細を Windows コンポーネント サービスから取得します。 詳しくは、「トランザクションとコンカレンシー」をご覧ください。
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;
Note
.NET Framework Data Provider for ODBC を使用する場合、MDAC 2.6 以降が必要となります。MDAC 2.8 SP1 をお勧めします。
.NET Framework Oracle 用データ プロバイダー
.NET Framework Data Provider for Oracle (OracleClient) は、Oracle クライアント接続ソフトウェアを介して、Oracle データ ソースのデータへのアクセスを可能にします。 このデータ プロバイダーは Oracle クライアント ソフトウェア バージョン 8.1.7 以降をサポートしています。 データ プロバイダーはローカル トランザクションと分散トランザクションのどちらもサポートします。 詳しくは、「トランザクションとコンカレンシー」をご覧ください。
.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 SQL Server 用データ プロバイダー | Microsoft SQL Server を使用する中間層アプリケーションに推奨されています。 Microsoft Database Engine (MSDE) または SQL Server を使用する単層アプリケーションに推奨されています。 SQLOLEDB (OLE DB Provider for SQL Server) と .NET Framework Data Provider for OLE DB を併用する場合に推奨されます。 |
.NET Framework Data Provider for OLE DB | SQL Server では、このプロバイダーではなく .NET Framework Data Provider for SQL Server が推奨されます。 Microsoft Access データベースを使用する単層アプリケーションに推奨されます。 Access データベースを中間層アプリケーションで使用することはお勧めできません。 |
.NET Framework Data Provider for ODBC | 中間層アプリケーションおよび単層アプリケーションで ODBC データ ソースを使用する場合に推奨します。 |
.NET Framework Oracle 用データ プロバイダー | 中間層アプリケーションおよび単層アプリケーションで Oracle データ ソースを使用する場合に推奨します。 |
EntityClient プロバイダー
EntityClient プロバイダーは、エンティティ データ モデル (EDM) に基づくデータ アクセスで使用されます。 他の .NET Framework データ プロバイダーとは異なり、データ ソースと直接やり取りしません。 代わりに Entity SQL を使用して、基になるデータ プロバイダーと通信します。 詳細については、「 Entity Framework 用の EntityClient プロバイダー」を参照してください。