Direct Access Components (PDAC) Guide (v11)

実装上の相違点 (PDAC)

次の表では、Pervasive と Embarcadero のコンポーネントの機能の相違点を示しています。

TPvTable
すべてのエイリアス管理機能で「名前付きデータベース」管理を行います。
TDBDataSet からではなく TPvDataSet から継承します。
TableLevel、UpdateObject、UnlockTable、OpenIndexFile、CloseIndexFile の各プロパティは既に削除されており、TableType が無視されます。
設計時と実行時のどちらででも、DSN、Pervasive 名前付きデータベースあるいはデータベースへの完全修飾パスとして、Database Name プロパティが利用できます。
TPvDatabase
DriverName、Locale、TtraceFlags の各プロパティが既に削除されています。
ハンドルのタイプが DRM_DBID に変更されます。
IsSQLBased は常に False を返します。
TransIsolation の値は、"tiDirtyRead" と "tiReadCommitted"(デフォルト)の 2 つのみとなります。
EPvDBEngineError
EDBEngineError の代替です。
TPvDBError
TDBError の代替です。
TPvSqlSession
すべてのエイリアス管理機能で DSN 管理を行います。
Handle プロパティのタイプが SQLHENV に変更されます。
AddStandardAlias メソッドではデフォルトの設定でエンジン DSN を追加します。
UpdateDsnType:TDsnTypes プロパティが追加されています。TDsnTypes = (dsnSystem, dsnUser)。UpdateDsnType の意味は次のとおりです。
DeleteAlias 関数の場合、DSN ユーザーがSystem または User DSN のどちらを削除するのかを示します。
AddAlias および GetAliasParameters 関数の場合、どの DSN タイプにするのかを示します。
TPvSqlDatabase
Handle プロパティのタイプが SQLHDBC に変更されています。
IsSQLBased プロパティは常に True になります。
Tables プロパティと StoredProcs プロパティには、それぞれ TsqlTablesInfoCollection と TsqlStoredProcInfoCollection というタイプがあります。
TPvQuery
TQuery からの継承です。
Handle プロパティのタイプが SQLHSTMT に変更されています。
DBHandle プロパティのタイプが SQLHDBC に変更されています。
StmtHandle プロパティが削除されています。
Text プロパティは常に SQL プロパティからのテキストを返します。
CheckOpen メソッドが削除されています。
インデックスとキーに関連するすべてのプロパティとメソッド(GetIndexInfo など)が削除されています。
新しく LoadBlobOnOpen プロパティが追加されています。LoadBlobOnOpen が True のときは、クエリ オープンですべての BLOB がメモリにキャッシュされます。LoadBlobOnOpen が False のときは、BLOB は必要時に読み込まれます。

TransIsolation プロパティの相違点

Pervaseve Direct Access Components の TransIsolation プロパティの動作は相当する Embarcadero の動きとは違います。

トランザクションの分離レベルでは、同じテーブルで動作するとき、トランザクションがほかで同時に動作しているトランザクションと対話する方法と、ほかのトランザクションによって実行されるオペレーションをトランザクションで監視する程度を決定します。

データベースのトランザクション分離レベルを指定するには、TPvDatabase.TransIsolation プロパティを使用します。

Pervasive Direct Access Components では tiReadCommitted モードのみをサポートします。これは、トランザクションが終了するまで、ファイルへの変更をほかのユーザーが見ることができないという意味です。これは、Pervasive PSQL エンジンの下でサポートされる唯一の設定です。

DSN を使用しない接続

PDAC のリレーショナル コンポーネントは、DSN または 名前付きデータベースなしでも、クライアント コンピューターからリモート サーバー データベースへ接続できます。サーバーにはデータベースの DSN がなければなりません。

この機能は、TPvSqlDatabase コンポートネントに追加された新しいプロパティ AliasNameIsConnectionString を使用することで動作します。詳細については、「VCL と異なる特定のクラス」を参照してください。

  1. Delphi のフォーム上に PvSQLDatabase を配置します。
  2. 架空の DatabaseName を設定します。これは何でもかまいません。
  3. 新しいプロパティ AliasNameIsConnectionString を True に設定します。
  4. AliasName プロパティ(または AliasName は空のままで DatabaseName)に「接続文字列」を設定します。
    「接続文字列」とは、ODBC への完全な接続文字列で、サーバー上の DSN とサーバーの名前を含めます。
    例:
    DRIVER={Pervasive ODBC Client Interface}; 
        ServerName=DSLINUX2; ServerDSN=DEMODATA; 
        UID=myuserid; PWD=mypassword 
    

    メモ

    接続文字列には引用符や改行はありません。お使いのエディターで行を折り返していた場合、プロパティ エディターで単一行にしてください。


    ユーザー名とパスワードが必要な場合、接続文字列の一部としてこれらを含めることができます。接続文字列にユーザー名とパスワードが含まれない場合、LoginPrompt プロパティが True であれば標準のデータベース ログイン ダイアログが表示されます。
  5. データベースを Connected に設定して通常どおり使用します。

これらの手順はすべて設計時、または実行時にコードから実行することができます。


Pervasive Direct Access Components の使用法

PDAC に基づくアプリケーションの配布