Direct Access Components (PDAC) Guide (v11)

Pervasive Direct Access Components の概要

Pervasive Data Access Components(PDAC)は、Embarcadero Delphi と C++ Builder 環境内で、Pervasive データベース エンジンに直接アクセスできるようにする、一連の Visual Component Library(VCL)コンポーネントです。これらのコンポーネントは、Borland Database Engine(BDE)のすべての機能を提供しながら、BDE の完全な代替品として動作します。PDAC により、Delphi と C++ Builder 開発者にとってはデータベース開発の選択肢が格段に増えます。

Pervasive Data Access Components でサポートされる開発環境については PDAC の Readme ファイルをお読みください。

PDAC のすべてのバージョンには、TPvSession、TPvDatabase、TPvTable、TPvBatchMove、TPvQuery、TPvStoredProc、TPvUpdateSQL、TPvSqlDatabase の非ビジュアル コンポーネントが含まれており、これらのコンポーネントのクラスがサポートされています。これら 32 ビット コンポーネントは、Embarcadero の Data Access Components のプロパティ、メソッド、およびバインド機能を再現しますが、実行時に Borland Database Engine(BDE)が存在している必要はありません。

これらのコンポーネントはパッケージ形式で提供され、組み込みコントロールの設計時および実行時に必要なすべての機能を提供します。これらは BDE コンポーネントと同様の方法で Embarcadero データ アウェア コントロールにバインドします。また、完全に互換性のある、サード パーティのバウンド コントロールにもバインドします。

Woll2Woll InfoPower コンポーネントとの相互運用性のための特別なコンポーネント(wwPvTable、wwPvQuery および wwPvStoredProc)が装備されています。

TPvTable、TPvDatabase、TPvBatchMove および TPvSession は、完全な PDAC セットの Btrieve サブセットを構成します。これらのコンポーネントでは、リレーショナル機能を使用しておらず、実行時に Pervasive PSQL リレーショナル インターフェイスまたは ODBC を必要としません。

TPvQuery、TPvStoredProc、TPvUpdateSQL、および TPvSqlDatabase コンポーネントでは、Pervasive PSQL リレーショナル インターフェイスを使用します。


メモ

Pervasive コンポーネントには Embarcadero のプロパティおよびメソッドが複製されているので、Embarcadero 固有のプロパティおよびメソッドについては、Embarcadero のドキュメントを参照してください。


次の表は、Pervasive Direct Access Components の種類およびそれに対応する Embarcadero コンポーネントを示しています。

Pervasive Direct Access Components
置き換える Embarcadero コンポーネント
TPvBatchMove
TBatchMove
TPvDatabase
TDatabase
TPvQuery、TwwPvQuery
TQuery
TPvSession
TSession
TPvSqlDatabase
TDatabase
TPvSqlSession
TSession
TpvStoredProc、TwwPvStoredProc
TStoredProc
TPvTable、TwwPvTable
TTable
TPvUpdateSQL
TUpdateSQL

以下の表では、Pervasive Direct Access Components の機能を示しています。

Pervasive コンポーネント
機能
TPvBatchMove
アプリケーションの、レコードのグループあるいはテーブル全体へのデータベース オペレーションを可能にします。この機能は、TBatchMove VCL コンポーネントと類似しています。
TPvDatabase
ログイン コントロール、トランザクション サポート、データベース接続持続性などの、非 SQL データベースのための接続に特化した機能を提供します。この機能は、TDatabase VCL コンポーネントと類似しています。
TPvQuery
SQL ステートメントを基本とした行セットをカプセル化します。これは、複数のテーブルに対する連結とキャッシュ後の更新を含む、完全なリレーショナル アクセスを提供します。この機能は、TQuery VCL コンポーネントと類似しています。
TPvSession
スレッドに対する安全性とクライアント ID のサポートを提供します。この機能は、TSession VCL コンポーネントと類似しています。
TPvSqlDatabase
ログイン コントロール、トランザクション サポート、データベース接続持続性などの、Pervasive PSQL データベースのための接続に特化した機能を提供します。この機能は、TDatabase VCL コンポーネントと類似しています。
TPvSqlSession
Pervasive PSQL のスレッドに対する安全性とクライアント ID のサポートを提供します。この機能は、TSession VCL コンポーネントと類似しています。
TPvStoredProc
Pervasive PSQL ストアド プロシージャへのアクセスを提供します。TpvQuery コンポーネントと同様に、パラメーター化し、行セットを返すことができます。この機能は、TStoredProc VCL コンポーネントと類似しています。
TPvTable
シングル テーブル アクセスと操作を提供します。この機能は、TTable VCL コンポーネントと類似しています。
TPvUpdateSQL
マルチテーブル結合などのほかの方法で更新できない SQL 行セットの(キャッシュ後の更新を含んだ)透過的な更新を可能にします。この機能は、TUpdateSQL VCL コンポーネントと類似しています。
TwwPvTable、TwwPvQuery、および TwwPvStoredProc
InfoPower 互換性のために PDAC に含まれています。TPvTable、TPvQuery、および TPvStoredProc から直接派生します。それぞれに、ControlType という追加のプロパティがあります。

これらのコンポーネントはスタンドアロン(つまり、Borland Database Engine(BDE)なし)で使用することができます。また、単一アプリケーション内で BDE と同時に使用することもできます。コンポーネントの使用法は対応する BDE コンポーネントと同じです。ただし、PDAC クラス、プロパティ、イベント、およびメソッドの記載については除外されます。

BookMarksEnabled プロパティ

TPvQuery には BookmarksEnabled というブール型の新しいプロパティが追加されました。アプリケーションでブックマークを使用しない場合は、このプロパティを False に設定すると TPvQuery のパフォーマンスが向上します。デフォルト値は True です。

PvQuery.BookmarksEnabled :=False 

セキュリティで保護されたデータベースと PDAC

セキュリティで保護されたデータベースに接続しようとすると、PDAC にユーザー名とパスワードの入力を求められます。ユーザー名とパスワードを入力しなくても済むようにしたい場合は、TPvDatabase および TPvSQLDatabase で接続パラメーターを設定します。

たとえば、次のように指定します。

   PvSession.ServerName:='ServerName'; 
   PvSession.SessionName:='session1'; 
   PvSession.Active:=True; 
 
   PvDatabase.AliasName:= 'DatabaseName'; 
   PvDatabase.DatabaseName:='DB'; 
   PvDatabase.SessionName:='session1'; 
   PvDatabase.Params.Clear(); 
 
// ここでユーザー名とパスワードを指定して  
// データベースに接続する 
 
   PvDatabase.Params.Add('User Name=UserName'); 
   PvDatabase.Params.Add('password=Password'); 
   PvDatabase.Connected:=True; 
   PvTable.DatabaseName:='DB'; 
   PvTable.SessionName:='session1'; 
   PvTable.TableName:='person'; 
   PvTable.Active:=True; 

TPvQuery

TPvQuery には CursorType プロパティがあり、ctCached または ctDynamic を設定できます。次の表では、このプロパティの動作を詳しく説明します。

カーソルの種類
動作
ctCached
この設定は旧バージョンで使用可能だった完全キャッシュ、完全静的カーソル マネージャーに相当します。レコードを返す前に ResultSet(結果セット)に各レコードを読み込みます。これはテーブルが大きい場合には速度が遅くなりますが、LookUp などのオペレーション用に開いた後では速くなります。
ctDynamic
この設定は新しいデフォルトです。これは Pervasive PSQL エンジンの動的カーソルを使用し、ctCached と比較した場合(特に大きいテーブルを扱う場合)、ほとんどのオペレーションでパフォーマンスが大いに向上します。


メモ

動的カーソルでは、自身またはその他のクライアントによる挿入/更新/削除を見ることができます。


このプロパティを変更することによって PvQuery の CursorType を変更することはできますが、これは Active が False になっている場合(実行時)に限ります。設計時にこれを変更し、クエリが Active の場合、そのクエリを非アクティブにしてからカーソルの種類を変更します(ただし、再度アクティブ化はしません)。実行時、Active が True になっている場合に PvQuery の CursorType を変更すると、例外(開いたデータセットでこのオペレーションを実行できません)がスローされます。

動的カーソルが静的カーソルに変わる状況

動的カーソル(ctDynamic)を要求したとしても、SQL ステートメントに動的カーソルを処理できない構文が含まれている場合、エンジンは接続してデータを返しますが、静的カーソルを使用します。たとえば、次のような構文が挙げられます。

カーソルが静的カーソルに変わる場合、この静的カーソルはエンジン ベースのカーソルで、ほかのクライアントによる挿入、更新または削除を見ることができません。以前のリリースの静的カーソル(カーソルの種類に ctCached を使用する)よりも正しく動作します。

カーソルが動的から静的に変わる場合は、Pervasive PSQL エンジンからそれが PDAC コンポーネントに通知され、EngineCursor という名前の読み取り専用のパブリック プロパティが設定されます。

EngineCursor プロパティは公開されていないので、設計時に[オブジェクト インスペクター]には表示されません。このプロパティには 2 つの値があります

このプロパティは変更できませんが、クエリを開いた後にその値を確認することができます。ほかのクライアントによって行われた更新がカーソルに含まれるかどうかをアプリケーション側で認識することが重要な場合などは、このプロパティを確認してください。

エンジンのバージョンのチェック

PDAC では、クエリまたはテーブルを開いたときに Pervasive PSQL エンジンのバージョンが適切かどうかをチェックしてエンジンのバージョン依存に伴うエラーが発生するのを完全に防ぐことができます。エンジンのバージョンが適切でない場合は例外が発生し、必要なバージョンを示すメッセージが表示されます。

TPvQuery.PassThrough

SQL テキストを事前解析しないで、エンジンへ直接送ることができます。

TPvDatabase.OEMConversion

このプロパティは、データベースに格納されている文字は OEM(DOS)コード ページによってエンコードされているため、データベースを使用する前にこれらの文字を ANSI(Windows)コード ページに変換する必要があることを示します。

詳細情報を入手するには

PDAC は下記 Web サイトからダウンロードにより入手可能です。

http://www.agtech.co.jp/support/reference/pervasive/psqllib/access_methods/pdac.html


Direct Access Components の使用方法

Pervasive Direct Access Components の使用法