|
2002年10月10日 『ADO.NET / .NET Data Provider』
皆さん、.NET Framework を使ってますか?
私は Web Service の仕事をやって、こんなに楽なんかと実感しています。
# Java の Web Service も実装しましたが、.NET Framework というか VS.NET
#での実装に比べると、非常に大変でした。
さてさて、今回は ADO.NET の .NET Data Provider について書きたいと思い
ます。
いろいろな ML を見てますと、ADO.NET のことを混同されている方が多く見ら
れます。
いままでの ADO の場合は OLE DB Provider がそれぞれのデータソースの差を
吸収してくれていました。
ADO -+-> OLE DB Provider for SQL Server -> SQL Server
|
+-> OLE DB Provider for ODBC -> ODBC Driver -> データソース
|
+-> Jet X.XX OLE DB Provider -> MDB
...etc
アプリケーション側では ADO の統一的な処理を記述するだけでよかったので、
( OLE DB Provider の実装によりますが)OLE DB Provider を切り換えるだ
けで、さまざまなデータソースにアクセスできました。
しかし、ADO.NET の場合はそれぞれのデータソースに応じた .NET Data
Provider を使用してアクセスする必要があります。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconadonetproviders.asp
今までの ADO が利用していた OLE DB Provider を使用する場合は
System.Data.OleDb 名前空間にあるクラスを使用します。
※ ODBC はサポートされていません!!
言わずと知れた SQL Server 用の .NET Data Provider は
System.Data.SqlClient 名前空間にあるクラスを使用します。
ODBC の場合は System.Data.OleDb 名前空間を使用せず、
Microsoft.Data.ODBC 名前空間 を使用します。
ODBC .NET Data Provider はデフォルトでは用意されていませんので、別途ダ
ウンロードが必要です。
http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/668/msdncompositedoc.xml
と大きく違うことがわかります。
では、これらを意識しないで済むやり方が存在しないのか?という疑問が沸い
てくると思います。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpcontheadonetcommonmodel.asp
ここに有る通り、やり方は存在しますが、個々の .NET Data Provider 固有の
記述があり、コーディングで注意する必要があります。
例えば、OLE DB .NET Data Provider の場合はパラメータには ? としますが、
SQL Server .NET Data Provider の場合は @名前 というように記述が違って
いますので。
また、既存の ADO アプリケーションのマイグレーションにも注意が必要です。
VB.NET では VB 6 のソースをマイグレーションできますが、このマイグレー
ションで行われることは ADO などの .NET Framework 上ではアンマネージド
な OLE テクノロジーを .NET Framework 上で利用できるラッパが生成され、
それによって動作するようになります。
ですので .NET Framework ネイティブな .NET Data Provider を使った
ADO.NET に完全移行するには自前でプログラムの修正が必要になるということ
も忘れないでください。
最後に、余談ではありますが、Oracle 用の .NET Data Provider も MS は用
意しています。
http://www.msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/940/msdncompositedoc.xml
|