Direct Access Components (PDAC) Guide (v11)

リレーショナル インターフェイス コンポーネント

リレーショナル インターフェイス コンポーネントのセットには以下のものが含まれています。

コンポーネントは、次の表に示すように Embarcadero のコンポーネントに置き換わります。

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

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

TPvSQLSession

Pervasive PSQL のスレッドに対する安全性とクライアント ID のサポートを提供します。この機能は、TSession VCL コンポーネントと類似しています。

TPvSQLSession と Embarcadero のコンポーネントの機能の相違点

関連情報

TPvSQLSession については、本章の以下のセクションを参照してください。

TPvSQLDatabase

ログイン コントロール、トランザクション サポート、データベース接続持続性などの、Pervasive PSQL データベースのための接続に特化した機能を提供します。この機能は、TDatabase VCL コンポーネントと類似しています。

TPvDatabase と Embarcadero のコンポーネントの機能の相違点

セキュリティで保護されたデータベース、およびユーザー名とパスワードの入力要求

セキュリティで保護されたデータベースに接続しようとすると、PDAC にユーザー名とパスワードの入力を求められます。このようなプロンプトが表示されないようにしたい場合は、次のコードを例として用いて、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; 

クライアントからの、DSN を使用しない接続

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

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

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


メモ

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


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

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

関連情報

TPvSQLDatabase については、本章の以下のセクションを参照してください。

TPvQuery

SQL ステートメントに基づいて行セットをカプセル化します。これは、複数のテーブルに対する結合やキャッシュされた更新を含む、完全なリレーショナル アクセスを提供します。この機能は、TQuery VCL コンポーネントと類似しています。

TPvQuery と Embarcadero のコンポーネントの機能の相違点

BookMarksEnabled プロパティ

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

PvQuery.BookmarksEnabled := False 

カーソル管理

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 つの値があります

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

関連情報

TPvQuery については、本章の以下のセクションを参照してください。

TPvUpdateSQL

マルチテーブル結合などのほかの方法で更新できない SQL 行セットの(キャッシュ後の更新を含んだ)透過的な更新を可能にします。この機能は、TUpdateSQL VCL コンポーネントと類似しています。

関連情報

TPvTable については、本章の以下のセクションを参照してください。

TPvStoredProc

Pervasive PSQL ストアド プロシージャへのアクセスを提供します。TpvQuery コンポーネントと同様に、パラメーター化し、行セットを返すことができます。この機能は、TStoredProc VCL コンポーネントと類似しています。

関連情報

TPvQuery については、本章の以下のセクションを参照してください。

TwwPvQuery

InfoPower 互換性のために PDAC に含まれています。TPvQuery から直接派生され、ControlType という追加のプロパティを持ちます。

TwwPvStoredProc

InfoPower 互換性のために PDAC に含まれています。TPvStoredProc から直接派生され、ControlType という追加のプロパティを持ちます。

ODBC と SQL のデータベース セキュリティ

ODBC および SQL のセキュリティは DDF レベルのデータベース セキュリティです。PDAC には SQL セキュリティをセットアップする特別な方法はありません。Pervasive Control Center または ODBC ツールなどの外部プログラムを使用する必要があります。Pervasive Control Center の詳細については、『Pervasive PSQL User's Guide』を参照してください。

データベースがセキュリティで保護されている場合は、テーブルを開くとき、または TpvDatabase コンポーネントにアクセスするときに、毎回ユーザー名とパスワードを入力するダイアログが表示されます。データベースにセキュリティが設定されているかどうかを調べるには、パブリック プロパティの TPvDatabase.IsSecured で確認することができます。セキュリティで保護されたテーブル、およびユーザー名とパスワードの入力要求も参照してください。


メモ

Btrieve インターフェイス セキュリティはオーナー ネームを使用します(テーブル セキュリティを参照してください)。データベースで SQL セキュリティが有効になっている場合、オーナー ネーム セキュリティは無視されます。



Btrieve (トランザクショナル)インターフェイス コンポーネント

PDAC と Embarcadero のコンポーネントの相違点(PDAC)