dbExpress の機能の概要
Win32 プラットフォーム向けのデータベース アプリケーションの開発:インデックス への移動
dbExpress の最上位フレームワークとメタデータ サポートは更新され、より充実したメタデータ サポートになりました。 DbxClient ドライバは、ネットワークベースの転送を通じて、dbExpress 4 フレームワーク インターフェイスをリモート化します。
このドキュメントでは、以下の機能について説明します。
- dbExpress フレームワーク
- dbExpress メタデータ機能の向上
- DBXClient ドライバ
- DBXDynalink ドライバ
- DBTest
目次
dbExpress フレームワーク
Vcl API がわずかに変わったのに合わせて、dbExpress VCL コンポーネントの実装が変更されました。 ほとんどのアプリケーションは、dbExpress VCL への変更の影響を受けません。 ただし、新しいメソッド、プロパティ、イベント、定数、および列挙がいくつか追加されています。
dbExpress メタデータ機能の向上
9 つの異なるデータベース バックエンド用の新しいメタデータ プロバイダは、完全に Delphi で記述されています。 すべてのメタデータ プロバイダの完全なソース コードは、この製品に含まれています。
メタデータの読み取り機能と書き込み機能
各プロバイダは、dbExpress ドライバ パッケージ内に含まれる、メタデータ リーダーとメタデータ ライターの実装から構成されています。 DbxReadOnlyMetaData と DbxMetaData パッケージにあった個別のメタデータ リーダーとメタデータ ライターはなくなりました。
プロバイダ ベースのアプローチ
メタデータ プロバイダは、ドライバから切り離されています。このため、データベース バックエンドが同じであれば、1 つのメタデータ プロバイダを複数のドライバ実装のために使用できます。 また、データ エクスプローラでもメタデータ プロバイダを利用して、他のデータベースのドライバに対してメタデータをサポートできます。
このプロバイダは、ドライバではなく、データベース バックエンドにバインドされます。 dbxdrivers.ini ファイルには、TDBXPropertyNames.MetaDataPackageLoader という新しいプロパティが追加されました。このプロパティを TDBXCommandFactory オブジェクトに設定できます。 このコマンド ファクトリ実装が、メタデータ コマンドを実行できる TDBXCommand を作成します。 このアプローチによって、特定のデータベース バックエンドに対応する複数のドライバ実装が、同じメタデータ プロバイダを使用できます。 また、データ エクスプローラでもメタデータ プロバイダを利用して、他のデータベースのドライバに対してメタデータをサポートできます。 ドライバとメタデータ プロバイダの分離には、"軽量の" ドライバ実装が可能になるというメリットがあります。 メタデータ コマンドをサーバー上で実行できる場合は、クライアント上にメタデータ プロバイダのロジックは必要ありません。
プロバイダのソース ディレクトリ
すべてのデータベース ソースは次のインストール場所に配置されるようになりました。
C:\Program Files (x86)\Embarcadero\Studio\22.0\source\database
メタデータの読み取り
メタデータを読み取るために、DBXMetaDataNames ユニットが用意されています。 dbExpress クラス TDBXMetaDataCommands には、さまざまなタイプのメタデータを読み取るための定数セットがあります。 Data.DBXCommon.TDBXCommand.CommandType プロパティを Data.DBXCommon.TDBXCommandTypes.DBXMetadata に、Data.DBXCommon.TDBXCommand.Text を、TDBXMetaDataCommands 内のいずれかのていすうに設定して、目的のメタデータを取得します。Data.DBXCommon.TDBXCommand.ExecuteQuery は、メタデータにアクセスする Data.DBXCommon.TDBXReader を返します。DBXMetaDataNames 内の新しいクラスは、メタデータの列へのアクセスを提供します。
メタデータの書き込み
SQL ダイアレクトに依存する CREATE、ALTER、および DROP の作成は、データ エクスプローラでサポートされています。 また、dbExpress は、アプリケーションにこの機能を提供する DbxMetaDataProvider クラスを公開しています。 これによって、アプリケーションのサイズが少し増加します。これは、メタデータ ライターを含める必要があるからです。 汎用的にテーブルを作成する機能は、多くのアプリケーションで有用です。 このインターフェイスを利用して、テーブルとその列の表示方法を記述し、この情報を TdbxMetaDataProvider.CreateTable メソッドに渡すことができます。 以下に簡単な例を示します。この例は、"C1" という int32 の列、"C2" という、有効桁数 10、小数点以下桁数 2 の 10 進数、"C3" という、有効桁数 32 の文字ベースの列があるテーブルを作成する方法を示しています。
var MetaDataTable: TDBXMetaDataTable; DataGenerator: TDbxDataGenerator; Command: TDBXCommand; Row: Integer; begin MetaDataTable := TDBXMetaDataTable.Create; MetaDataTable.TableName := 'QCXXX_TABLE'; MetaDataTable.AddColumn(TDBXInt32Column.Create('C1')); MetaDataTable.AddColumn(TDBXDecimalColumn.Create('C2', 10, 2)); MetaDataTable.AddColumn(TDBXUnicodeCharColumn.Create('C3', 32)); MetaDataProvider.CreateTable(MetaDataTable); end
配置
データベース アプリケーションの配置については、「データベース アプリケーションの配置」を参照してください。
互換性
SqlExpr ユニットの VCL コンポーネントは、制限の多い dbExpress 3 のメタデータを提供するドライバと組み合わせても動作します。 ただし、データ エクスプローラは、dbExpress 4 のメタデータとのみ動作します。
Delphi には、9 種類のデータベース バックエンド用のメタデータが含まれています。 このため、サポートされている 9 つのバックエンド用の dbExpress ドライバ実装は、いずれもメタデータ プロバイダを再利用できます。
DBXClient ドライバ
DBXClient は、軽量な dbExpress 4 ドライバで、dbExpress 4 フレームワーク インターフェイスを、プラグイン可能なネットワーク ベースの転送を介してリモート制御します。 このリリースでは、TCP/IP 転送がサポートされています。 このドライバは、JSON/RPC(Java Script Object Notation)ベースのストリーミング プロトコルを使用します。
DBXClient は、Object Pascal で完全に実装されています。 そのソース コードは、この製品に含まれています。
接続性
DBXClient では DataSnap に接続できます。 DataSnap には、リモート データ モジュールを格納し管理する中間層アプリケーション サーバーが用意されています。 DataSnap は強化され、異なる階層のコンポーネント間の非常に一般的な接続メカニズムを提供するようになりました。
DBXClient ドライバを DataSnap と一緒に使用するには、DBXClient ユニットを uses 句に追加します。
配置
DBXClient では、アプリケーションを配置するときに、データベース クライアント ライブラリをインストールする必要がありません。 DBXClient は 100% Delphi なので、単一の .exe ファイルとして、アプリケーションに直接リンクできます。
データベース アプリケーションの配置についての詳細は、「データベース アプリケーションの配置」を参照してください。
DBTest
DBTest は、データベースのテストを支援する Dunit の機能を拡張したクラスのコレクションです。 Dunit テストのサンプルの qcreport と cts は、DBTest の使い方の良い例を示しています。 TestCaseExtension には、データベース関連ではない Dunit の拡張が含まれています。DBXTest ユニットには、データベース関連の拡張が含まれています。
コマンド ライン プロパティ
8 つのすべての Dynalink ドライバ用に、新しいユニットが DbxDynalinkDriver パッケージに追加されました。
テストの選択
-s:<TestName> コマンドラインは、Dunit テスト ケースで単一のメソッドを実行するために使用します。 これは、1 つのバグをデバッグする場合に役立ちます。 詳細は、「TestCaseExtension ユニット」を参照してください。
便利なメソッド
デフォルトの接続やメタデータ プロバイダを作成するためのメソッドがいくつかあります。 詳細は、「DBXTest ユニット」を参照してください。
データ ジェネレータ
拡張可能なデータ ジェネレータのサンプルがあります。 詳細は、「DBXDataGenerator ユニット」を参照してください。