■ データアクセス

  • .NET では ADO.NET を利用

         分散アプリケーションに適したモデル

         XML に強力に対応

  • ADO と ADO.NET はコントロールとのバインドが可能

変更ポイント

Visual Basic .NET では、.NET Framework が提供するデータアクセスのためのライブラリである ADO.NET を利用できます。これは、アプリケーションが今まで以上に分散し、企業を超えて、企業間でひとつのアプリケーションを構成する場面などを想定しています。そのため、データソースに常に接続していない、いわゆる 「非接続型のデータアクセス」 にフォーカスしたモデルとして設計されています。同時に、XML の機能が強化されていることも特徴のひとつです。さらに、分散アプリケーションで使用したときのパフォーマンスも ADO と比べて改善されています。

Windows フォームや Web フォームでは、ADO.NET (図 4) や、それとバインドするための DataGrid コントロールなどを利用することができます。

  • DataSet
    ADO.NET の最も重要なクラスで、データをキャッシュして利用するために使います。

    ADO の Recordset オブジェクトの機能のうち、分散アプリケーションにおいて必要な 「非接続型のデータアクセス」 を意識したオブジェクトであることが DataSet の特徴です。

  • OleDbXXX
    「OleDb」 で始まるクラスは、OLE DB プロバイダ経由のデータアクセスを実現します。

  • SqlXXX<<br> 「Sql」 で始まるクラスは、直接 SQL Server にアクセスすることができます。

DataGrid コントロールにバインドされたデータを、Windows フォームでは読み書き両用に使えますが、Web フォームでは読み取り専用となります (もちろん相応のコードを書けば、Web アプリケーション上でもデータの更新は可能です)。

Visual Basic .NET でも、ラッパークラスを利用して従来の DAO や RDO や ADO も利用可能ですが、COM と .NET のオーバーヘッドがあります。また、ADO.NET と同様のデータバインディングが可能なのは、ADO だけです。

図4:ADO.NET

図4:ADO.NET

アップグレードウィザードによる変更点

コードのアップグレード

DAO、RDO を利用している Visual Basic 6.0 のプロジェクトをアップグレードすると、ラッパークラスが自動的に生成され、それを利用して動作するアプリケーションになります。また ADO を利用しているプロジェクトは、システムが提供する ADO 2.7 用のラッパークラス (「Primary Interop Assembly」として提供) を利用するアプリケーションにアップグレードされます。つまり、いずれも特別なコードの変更は不要です。

コントロールのアップグレード

データコントロール (DAO のデータコントロール) はアップグレードされずにエラーを表わす 「赤い色のラベル」 に変更されます (アップグレードしたときに対応するコントロールがないと、多くの場合この赤色のラベルになります)。

また、RDC (RDO のデータコントロール) はラッパークラスが生成されますが、コントロールへのデータのバインディングはできません。

ADODC (ADO データコントロール) は Visual Basic 6.0 の互換機能として提供される ADODC に置き換えられます。また、バインドしていたコントロール (データグリッドやデータリストコントロールなど) を利用している場合は、それらのためのラッパークラスが追加されます。バインディングの情報もそのままアップグレードされますので、特に修正をしなくてもそのままでアプリケーションが動作します。このまま ADODC を使うことも可能ですが、あくまでも、Visual Basic 6.0 との互換のために用意されたものであるため、将来に渡って存在が保障されるわけではありません。オーバーベッドを考慮する場合や、ADO.NET の機能を利用したい場合は、ADO.NET 、および対応するコントロールやコンポーネントに置き換えるとよいでしょう。

今、何をしておくべきか?

ADO.NET は、ADO に似ている部分もありますが、データへのアプローチやアプリケーション設計の方針が異なります。ですから、ADO.NET を利用したアプリケーションを作成する場合、既存の ADO のコードを活用するよりも、ADO.NET でイチからコーディングをしたほうが、ADO.NET の特徴を生かしたアプリケーションが作成できるかもしれません。もちろん、データにアクセスするための ADO の知識が無駄になるわけではありません。むしろ、それと比較することで ADO.NET の優位性が見えてきて、よりよいコードが書けると思います。実際多くの ADO.NET のマニュアルは ADO との比較でそれを語っています。

そのような意味でも、Visual Basic 6.0 では ADO を利用して ADO に親しんでおき、.NET になったら、ADO.NET を利用することをお勧めします。

関連・補足項目

ADO.NET については、ぜひ別途習得してください。