PSQL Programmer's Guide (v11)

データベース URI (トランザクショナル インターフェイス)

Btrieve ログイン API や、Create または Open オペレーションによる暗黙のログイン機能を使用する上での主要な概念は、データベース URI(Uniform Resource Indicator)です。これは、サーバー上のデータベース リソースのアドレスを記述する構文を提供します。

このセクションでは、Btrieve API で使用する URI の構文と意味を説明します。

構文

URI は次の構文を使用します。

access_method://user@host/dbname?parameters

   

表 8 データベース URI の要素
要素
定義
access_method
データベースのアクセスに使用する方法。この要素は必須です。現在、btrv のみがサポートされています。
user@
ユーザー名(省略可能)。必要な場合は、parameters にユーザーのパスワードを指定します。"@" 文字は、host が指定されない場合でもユーザー名を区切るために使用する必要があります。
host
データベースが保存されているサーバー。host が指定されていない場合は、ローカル マシンと見なされます。host には、マシン名、IP アドレス、あるいは "localhost" キーワードを指定できます。
メモ:Linux オペレーティング システムのデータベースにアクセスする URI の場合、host は必須要素です。
dbname
データベース名(省略可能)。Pervasive PSQL データベース エンジンの DBNAMES.CFG ファイル内のエントリに対応します。データベース名が指定されていない場合は、デフォルトのデータベース "DefaultDB" と見なされます。
parameters
追加オプション パラメーター。&(アンパサンド)文字で区切ります。
  • table=テーブル - 特定の SQL テーブル名を指定します。テーブル名はデータベースの DDF に存在している必要があります。
  • dbfile=ファイル - ファイルの名前。ファイルの場所は、現在のデータベースに対する、DBNAMES.CFG 内のデータ ファイル ロケーションのエントリに関連しています。相対パスが指定されるので、ドライブ名の使用、絶対パスまたは UNC パスは不可です。データベース エンジンは完全なファイル名を解決します。いかなる方法であっても、Pervasive PSQL クライアントによって「ファイル」が処理されることはありません。空白の埋め込みは可能です。それらの空白はデータベース エンジンによってエスケープされます。
  • file=ファイル - 特定のデータ ファイル名を指定します。Pervasive PSQL クライアントはデータベース エンジンへ要求を送る前に、ファイルを標準の状態に変更し、入力名をその変更後の完全修飾 UNC 名で置き換えます。ドライブ名が使用されることがあり、その場合はクライアント側のドライブ名として解釈されます。スペースを含む UNC パスを使用することも可能です。
  • pwd=パスワード - クリア テキスト パスワード。Pervasive PSQL クライアントは、転送する前に、クリア テキスト パスワードを暗号化パスワードに変更します。
  • prompt=[yes|no] - データベース エンジンからステータス 170(ユーザー名が不正であるか見つからないため、ログインに失敗しました)または 171(パスワードが不正なため、ログインに失敗しました)が返されたとき、ログイン ダイアログ ボックスのポップアップをどのように処理するかを Pervasive PSQL クライアントに知らせます。prompt=yes と指定した場合、リクエスターは[クライアント資格情報の入力要求]がオフに設定されている場合でも、常にログイン ダイアログ ボックスを表示します。prompt=no と指定した場合、リクエスターは、アプリケーションはステータス 170/171 を直接受け取って、リクエスターにダイアログ ボックスを表示させたくないものと見なします。これは、170 または 171 ステータス コードに対して、認証の入力要求をアプリケーションで処理したい場合に有用です。"yes" または "no" 以外の値は無視されます。リクエスターは[クライアント資格情報の入力要求]設定に基づいてログイン ダイアログ ボックスを表示します。このオプションは、クライアントの役割を果たしている Linux では無視されます。

パラメーターの優先順位

パラメーターの "file"、"table" および "dbfile" のうち、2 つ以上のパラメーターが URI に指定された場合、データベース エンジンはそれらのパラメーターに対し優先順位を設定します。つまり、データベース エンジンは URI の解析後、優先順位が最も高いパラメーターを残します。同じ優先度を持つパラメーターが 2 つ以上指定された場合は、解析後には URI で最後に指定されているパラメーターが残ります。

優先順位は "file"、"table"、"dbfile" の順で設定されています。

優先順位の例

初期 URI 文字列
解析後 URI 文字列
btrv://?file=MyFile.btr&table=MyTable&dbfile=DataFile.btr
btrv://?file=MyFile.btr
btrv://?table=MyTable&dbfile=DataFile.btr
btrv://?table=MyTable
btrv://?dbfile=DataFile.btr&file=MyFile.btr
btrv://?file=MyFile.btr
btrv://?dbfile=DataFile.btr
btrv://?dbfile=DataFile.btr
btrv://?file=FileOne&file=FileTwo
btrv://?file=FileTwo
btrv://?table=TableOne&table=TableTwo&file=MyFile.btr
btrv://?file=MyFile.btr

特殊文字

ほかの URI と同様に、ある特定の英数字以外の文字は URI 構文で特殊な意味を持ちます。そのような文字の 1 つを URI のいずれかの要素で使用する場合は、その文字が実際のテキストではなく特殊文字であると識別されるよう、エスケープ シーケンスを使用する必要があります。エスケープ シーケンスは、特殊文字に相当する標準テキストを表す、別の特殊文字または文字の組み合わせです。

下記の表は、トランザクショナル インターフェイス URI の構文でサポートされている特殊文字と、それに関連付けられたエスケープ シーケンス(パーセント記号と、指定された文字の 16 進値で表されます)を示しています。

表 9 データベース URI における特殊文字
文字
説明
16 進値
/
ディレクトリとサブディレクトリを区切ります。
%2F
?
ベース URI と関連パラメーターを分離します。
%3F
%
特殊文字を指定します。
%25
#
ブックマークまたはアンカーを示します。
%23
&
URI 内のパラメーターを区切ります。
%26
" "
二重引用符で囲まれている内容全体を示します。
%22
=
パラメーターとその値を区切ります。
%3D
空白
特別な意味はありませんが、予約されています。
%20
:
ホストとポートを分離します(予約されていますが、現在はサポートされていません)。コロンは IPv6 アドレスでも一部使用されます。IPv6 を参照してください。
%3A

空白文字は URI 仕様で予約されていますが、これは区切り文字として使用されないため、引用符もエスケープ シーケンスもなしで使用できます。それ以外の上記の表内の記号は区切り文字として使用されるため、エスケープする必要があります。

このセクションでは、フィールド値の中で使用されている特殊文字を識別するためにエスケープ シーケンスを使用している URI の例を示します。

表 10 エスケープ シーケンスを含んでいる URI の例
URI
説明
btrv://Bob@myhost/demodata?pwd= This%20Is%20Bob
ユーザー名が "Bob" でパスワードが "This Is Bob"
btrv://Bob@myhost/demodata?pwd= This Is Bob
ユーザー名が "Bob" でパスワードが "This Is Bob"
btrv://myhost/mydb?file=c:/program%20files/pvsw/mydb/c.mkd
%20 は空白文字を表します。開くファイルは "C:¥Program Files¥pvsw¥mydb¥ c.mkd" です。
btrv://Bob@myhost/demodata?pwd= mypass%20Is%20%26%3f
ユーザー名が "Bob" でパスワードが "mypass Is &?"

備考

空のユーザー名または空のパスワードは、ユーザー名やパスワードがないこととは異なるので注意してください。たとえば、btrv://@host/ には空のユーザー名が入っていますが、btrv://host/ にはユーザー名がありません。btrv://foo@host/?pwd= は "foo" というユーザー名があり空のパスワードが入っています。

URI によっては user:password 構文を使用することもできます。ただし、ここで指定されるパスワードはその後クリア テキストとして転送されます。パスワードがクリア テキストとして転送されないようにするため、user:password 構文を使用してパスワードが提供された場合、Pervasive PSQL データベース URI はそのパスワードを無視します。pwd= パラメーターを使用してパスワードを提供してください。このパスワードは Pervasive PSQL クライアントによって転送される前に暗号化パスワードへ変更されます。

いくつかの URI では user@host:port 構文を使用するサーバー ベースの命名機関を可能にすることもできます。Pervasive PSQL データベース URI は port 要素の指定をサポートします。

URL(Uniform Resource Locator)は単に、インターネット上のファイルまたはリソースのアドレスです。データベース URI は同じ概念を利用してサーバー上のデータベースのアドレスを指定します。このセクションでは、Pervasive PSQL データベースにおける、特にトランザクショナル インターフェイス アクセスを使用する場合の URI の構文と意味の例を挙げます。

表 11 トランザクショナル インターフェイス URI の例
説明
btrv://myhost/demodata
サーバー "myhost" 上のデータベース "demodata"。サーバーのオペレーティング システムは、Pervasive PSQL でサポートされる OS のいずれかになります。
btrv:///demodata
ローカル マシン上のデータベース "demodata"。ローカル マシンは Windows オペレーティング システムを実行しています。Linux オペレーティング システムでは host 要素が必須です(上の例を参照)。
btrv://Bob@myhost/demodata
パスワードなしのユーザー名 "Bob" で、サーバー "myhost" 上のデータベース "demodata" にアクセスします。
btrv://Bob@myhost/mydb?pwd=a4
ユーザー名 "Bob"、パスワード "a4" で、サーバー "myhost" 上のデータベース "mydb" にアクセスします。
btrv://myhost/demodata?table=class
不特定のユーザーが、サーバー "myhost" 上のデータベース "demodata" 内のデータベース テーブル "class" にアクセスします。
btrv://myhost/?table=class
不特定のユーザーが、サーバー "myhost" 上のデフォルト データベース("DefaultDB")内のデータベース テーブル "class" にアクセスします。
btrv://myhost/mydb?file=f:/mydb/a.mkd
不特定のユーザーが、サーバー "myhost" 上のデータベース "mydb" のセキュリティ資格情報を使用して、クライアントで見られるようなデータ ファイル "f:/mydb/a.mkd" にアクセスします。
クライアントはドライブ "f:" を変更するので注意してください。これは、クライアントで "f:" をサーバー "myhost" へ割り当てる必要があることを意味します。
btrv://mydb?file=c:/mydb/a.mkd
不特定のユーザーが、ローカル マシン上のデータベース "mydb" 下のデータ ファイル "c:/mydb/a.mkd" にアクセスします。
ドライブ "c:¥" はローカル マシン上のローカル ドライブです。ローカル マシンは Windows オペレーティング システムを実行しています。
btrv://myhost/demodata?dbfile=class.mkd
不特定のユーザーが、サーバー "myhost" 上のデータベース "demodata" に定義されたデータ ディレクトリのうちの 1 つにあるデータ ファイル "class.mkd" にアクセスします。ファイル名が file= ではなく dbfile= で指定されているため、クライアント リクエスターはファイル名 class.mkd を標準の状態に変更しません。サーバー エンジンのみが class.mkd を標準の絶対パスに変更します。

IPv6

URI および UNC 構文では、コロンなど一部の特殊文字を使用できません。未加工の IPv6 アドレスではコロンを使用するので、UNC パスや URI 接続の処理には異なる方法を使用できます。Pervasive PSQL は IPv6-literal.net 名および、角かっこ([])で囲まれた IPv6 アドレスをサポートします。

Getting Started with Pervasive PSQL』の UNC パスおよび URI 接続を使用した IPv6 を参照してください。


キー属性 (トランザクショナル インターフェイス)

ダブルバイト文字のサポート (トランザクショナル インターフェイス)