dbExpress フレームワークの互換性
Win32 プラットフォーム向けのデータベース アプリケーションの開発:インデックス への移動
dbExpress ドライバ フレームワーク(DBX ドライバ フレームワーク)の登場以前に開発されたある dbExpress ソフトウェアが、DBX ドライバ フレームワークでも動作するように修正されました。それに伴う変更の結果、互換性の問題がいくつか起きています。
全般的な問題
dbExpress 2.5 ドライバは DBX フレームワークでは使用できません。
dbExpress フレームワークには、dbExpress 3 との完全な互換性はありません。
dbExpress 3 ドライバは DBX フレームワークで使用できます。DBX フレームワークのドライバ ローダーは dbExpress 3 ドライバを自動的に検出し、DBXAdapter ドライバ(dbxadapter30.dll)を使用して dbExpress 3 ドライバを dbExpress 4 ドライバのように見せかけます。
互換性に関する既知の問題を以下に列挙します。
- ドライバの静的リンク。dbExpress ドライバを実行可能ファイルに静的にリンクすることはできません。
- ネイティブ版の SqlExpr.pas の SqlExpr.TSQLConnection では、TISQLConnection 型の Connection メンバにのみ protected アクセスが可能でした。マネージ版の dbExpress VCL では PInvoke の使用方法が複雑になるため、これはマネージ版から削除されていました。今回 SqlExpr.TSQLConnection では、Data.DBXCommon.TDBXConnection への protected アクセスが可能になりました。この protected 接続は、ネイティブ アプリケーションでもマネージ アプリケーションでも利用できます。
- DBX ドライバ フレームワークに基づいているため、トレース監視のイベントが若干異なります。
- DBXAdapter ドライバは dbExpress 3 ドライバを dbExpress 4 に適合させることはできますが、dbExpress 2.5 ドライバについてはできません。
VCL 関連の問題
dbExpress VCL コンポーネントを使用するアプリケーションの大半は、修正しなくても動作するはずです。ただし、VCL では C 言語に似た COM ベースの dbExpress 3 ドライバ インターフェイスではなく、よりオブジェクト指向の DBX ドライバ フレームワークを利用するようになったため、VCL コンポーネントの一部に限定的な変更が加えられています。
さらに、Data.SqlExpr.TSQLConnection と Data.SqlExpr.TSQLDataSet という 2 つの VCL コンポーネントについては、API が少し変更されました。データ構造の中にも変更されたものがあります。API の変更点をまとめると、以下のようになります。
メモ:API が変更されたため、SqlExpr.pas(製品に付属)を再コンパイルする必要があります。DBXpress ユニットは推奨されなくなりました。
- TSQLConnection: 新しい CommitFreeAndNil メソッドの採用により、Commit メソッドは推奨されなくなりました。新しい RollbackFreeAndNil メソッドと RollbackIncompleteFreeAndNil メソッドの採用により、Rollback メソッドは推奨されなくなりました。SetTraceCallbackEvent メソッドに代わって、SetTraceEvent メソッドが使用されることになりました。新しい BeginTransaction メソッドの採用により、StartTransaction メソッドは推奨されなくなりました。MetaData プロパティには、TISQLMetaData ではなく新しいクラス Data.DBXCommon.TDBXDatabaseMetaData のインスタンスが格納されることになりました。SQLConnection プロパティに代わって、DBXConnection が使用されることになりました。その中には、新しいクラス Data.DBXCommon.TDBXConnection のインスタンスが格納されます。TraceCallbackEvent プロパティには、TDBXTraceEvent インスタンスが格納されることになりました。
- TSQLDataSet: 新しいプロパティ DbxCommandType が追加されました。その中には、Data.DBXCommon.TDBXCommandTypes クラスに定義されている定数文字列の 1 つが格納されます。
- データ構造: TTransactionItem は推奨されなくなり、その代わりに新しい Data.DBXCommon.TDBXTransaction クラスが使用されることになりました。TSQLDriverOption、TSQLConnectionOption、TSQLCommandOption、TSQLCursorOption、TSQLMetaDataOption、TSQLObjectType は使用されなくなりました。TSTMTParamType に代わって、Data.DBXCommon.TDBXParameterDirections クラスが使用されることになりました。TSQLTraceFlag に代わって、Data.DBXCommon.TDBXTraceFlags クラスが使用されることになりました。SQLTRACEDesc の代わりに TDBXTraceInfo が使用されることになりました。