Edit of CONNECT
Front page
Diff
Backup
Reload
List of pages
Search
Recent changes
Help
Login
CONNECT
Edit of CONNECT
[[FrontPage]]へ~ -[[リファレンスガイド]]へ~ --[[Firebird SQLリファレンス]]へ~ &br; ---- *Firebird SQL リファレンス:CONNECT系,SET SQL DIALECT系 [#cac8596a] #contents ---- &br; &aname(connect); *CONNECT [#k444c8ec] データベースに接続します。SQLで使用可能です。また、isqlではCONNECTの サブセットが使用できます。~ 接続のキャラクタセットは、CONNECT の前に SET NAMES で設定したものとなり ます。日本語を取り扱う場合には、事前に設定を行う必要があるかもしれません。 特に、データベース内でキャラクタセットを明示している場合には必須です。~ この文書は、公開されているIB6のSQLレファレンスを基とし、1.5.1までの 各リリースノートにおける追加内容に関して反映・統合されています。~ **構文 [#gc87ea24] isql(サブセット)形式: CONNECT 'filespec' [USER 'username'][PASSWORD 'password'] [CACHE int] [ROLE 'rolename'] &br; SQL形式: CONNECT [TO] {ALL | DEFAULT} <config_opts> | <db_specs> <config_opts> [, <db_specs> <config_opts>...]; &br; <db_specs> = dbhandle | {'filespec' | :variable} AS dbhandle <config_opts> = [USER {'username' | :variable}] [PASSWORD {'password' | :variable}] [ROLE {'rolename' | :variable}] [CACHE int [BUFFERS]] &br; &br; |引数|説明|h |{ALL|DEFAULT}|SET DATABASEで指定したすべてのデータベースに接続します。CONNECT TO ALL と指定した場合は、すべてのデータベースに対して影響を与えます。| |'filespec'|データベースのファイル名です。パスやノードの指定を含むことが出来ます。空白文字を含む場合には、シングルクォーテーションで囲む必要があります。&br;(FB1.5以降では、データベースのaliases.confで定義したエイリアスを使用することも出来ます。)| |dbhandle|事前に SET DATABASE で宣言したデータベースハンドルです。埋め込みSQLで使用可能ですが、isqlでは使用できません。| |:variable|ホスト言語の変数で、データベース名やユーザー名パスワード等の指定を行います。埋め込みSQLで使用可能ですが isql では使用できません。| |AS dbhandle|宣言されたデータベースハンドルにデータベースの接続を割当てます。埋め込みSQLで使用可能ですが isql では使用できません。| |USER {'username'|:variable}|文字列もしくはホスト変数で指定されたユーザー名でデータベースに接続します。サーバは、ユーザー名をセキュリティデータベースと照合します。| |PASSWORD {'password'|:variable}|データベース接続のためのパスワードを、文字列もしくはホスト変数により最大8文字で指定します。サーバは、ユーザー名とパスワードをセキュリティデータベースと照合します。| |ROLE {'rolename'|:variable}|データベース接続のためのロール名を、文字列もしくはホスト変数により最大32文字で指定します。ユーザーは、ロール特権を得るためには事前にロールのメンバーシップを与えられなければなりません。ROLE節が指定されれば、そのメンバーシップに関係なく接続時にはその特権が与えられます。1回の接続では1つのロールしか使用できません。変更するには再接続を行う必要があります。| |CACHE int [BUFFERS]|データベース接続のキャッシュバッファサイズを設定します。指定は現在のページサイズ単位となり、整数で指定します。&br;デフォルト値は256です。&br;最大サイズはシステムに依存します。&br;※filespecでのキャッシュサイズ指定は使用しないで下さい。| **詳細の説明 [#p7551be6] &br; -データベースデータストラクチャを初期化します。~ &br; -データベース本体があるノード(ローカルデータベース)もしくは、 別のノード(リモートデータベース)を指定します。データベースエンジンがアクセス できない場所が指定された場合には、エラーが発生します。~ &br; -データベース接続のためのユーザー名、パスワード、ロールなどのうち、必要な ものを選択して指定します。PCクライアントは、常に正しいユーザー名とパスワード を送信しなければなりません。データベースエンジンは、パスワードの最初の8文字 のみを認識します。~ &br; ユーザーが環境変数の ISC_USER と ISC_PASSWORD を設定し、さらにそこで設定 されたユーザーが security.fdb または isc4.gdb に存在しない場合は、ローカル サーバマネージャーから、次のようなエラーを受取るはずです。~ "undefined user name and password.”(未定義のユーザーとパスワードです。)~ サーバマネージャによって行われる自動接続は、ユーザーのセキュリティ操作を バイパスします。~ &br; -データベースへの接続時には次のことが行われます。~ 1. ヘッダページ部分のベリファイ~ 2. 既存データベースの存在チェック~ 3. バージョンチェック。オンディスクストラクチャ(ODS)にはデータベースの バージョン番号があるので、データベースエンジンが扱えるバージョンである かチェックします~ 異常があった場合、データベースエンジンはエラーを返します。~ &br; -必要な場合は、SET DATABASE を使用してデータベースハンドルを設定しておきます。~ &br; -データベース接続のために、指定したキャッシュバッファが確保されます。~ &br; -(埋め込みSQLなどで)SQLを使用するプログラムでは、CONNECT でデータベースに 接続する前に SET DATABASE を行う必要があります。isql では、SET DATABASE は 使用しません。~ &br; -(埋め込みSQLなどで)SQLを使用するプログラムでは、CONNECT 文で複数の データベース接続を行えますが、接続ごとの文を用意することにより、プログラムの 可読性が向上します。~ &br; -CONNECTでデータベースに接続するとき、デフォルトのキャラクタセットは(NONE) となります。キャラクタセットを指定して接続したい場合は、事前に、SET NAMES 文 を使用して設定します。~ &br; -(埋め込みSQLなどで)SQLを使用するプログラムではデフォルトのキャッシュサイズ は75ですが、CACHEオプションによりシステムで最大限利用可能なサイズまでの量が 確保できます。このオプションは以下のように使用できます。~ --CONNECT文で示された全データベース接続リストの中で、指定サイズのキャッシュを 持っていないものに新しいデフォルトサイズを設定します。~ --1つのデータベース接続を使用するプログラムのキャッシュサイズを設定します。 --デフォルト値は変更せずに、1つのデータベース接続のキャッシュサイズのみを 変更します。~ 接続が維持されている限り、そのキャッシュサイズは変更されません。 データベース接続がマルチクライアント・サーバ接続で行われている場合、すべて の接続が終了するまでキャッシュサイズの増加は行われません。キャッシュサイズ の減少は、すべてのデータベース接続が終了するまで行われません。~ &br; -isqlでは、データベースファイル名、ユーザー名、パスワードを指定する CONNECT のサブセットが使用できます。また、isqlでは同時に複数のデータベースに接続する ことは出来ません。新しいCONNECT文を使用すると、それまでの接続は自動的に切断 されます。~ **用例 [#t41d3c72] -isqlで、データベースを開く例です。 CONNECT 'employee.fdb' USER 'ACCT_REC' PASSWORD 'peanuts'; -isqlで、キャラクタセットをシフトJISに設定してデータベースを開く例です。 日本語を正しく扱うには、''事前に''キャラクタセットを設定した方が良いです。 SET NAMES SJIS_0208; CONNECT 'employee.fdb' USER 'SYSDBA' PASSWORD 'masterkey'; -埋め込みSQLでの使用例です。データベースハンドルを使用し、パラメータはホスト 変数で与えています。 EXEC SQL SET DATABASE DB1 = 'employee.fdb'; EXEC SQL CONNECT :db_file AS DB1; -埋め込みSQLでの使用例です。accounts.fdb への接続でキャッシュバッファサイズ を150に設定しています。 EXEC SQL CONNECT 'accounts.fdb' CACHE 150; -埋め込みSQLでの使用例です。事前に SET DATABASE で指定したすべてのデータベース に対し、指定したユーザー名で接続します。 EXEC SQL CONNECT ALL USER 'ACCT_REC' PASSWORD 'peanuts' CACHE 50; -埋め込みSQLでの使用例です。キャッシュサイズを、employee.fdb は 80、 employee2.fdbはデフォルトの 75 にします。 EXEC SQL CONNECT 'employee.fdb' CACHE 80, 'employee2.fdb'; -埋め込みSQLでの使用例です。接続するすべてのデータベースのキャッシュサイズ を 50 にします。 EXEC SQL CONNECT ALL CACHE 50; -埋め込みSQLでの使用例です。キャッサイズを各々 80 にします。 EXEC SQL CONNECT EMP1 CACHE 80, EMP2 CACHE 80; -埋め込みSQLでの使用例です。ホスト変数で指定した2つのデータベースに対し、 別々のユーザーとして接続しています。 EXEC SQL CONNECT :orderdb AS DB1 USER 'ACCT_REC' PASSWORD 'peanuts', :salesdb AS DB2 USER 'ACCT_PAY' PASSWORD 'payout'; **参照 [#s4284111] [[DISCONNECT>#disconnect]] , [[SET DATABASE>#set_database]] , [[SET NAMES>#set_names]] &br; &br; キャッシュバッファに関するより詳細は Data Definition Guide の cache buffers を、データベースセキュリティとisqlに関するより詳細は、Operations Guide を参照 して下さい。 &br; &br; ---- &br; &br; &aname(disconnect); *DISCONNECT [#i984caa6] データベースとの接続を切断します。SQLで使用できます。 isqlでは使用できません。 **構文 [#hf99e041] DISCONNECT { {ALL | DEFAULT} | dbhandle [, dbhandle] …] } ; &br; &br; |引数|説明|h |ALL|DEFAULT|どちらを指定しても、すべてのデータベース接続を切断します。| |dbhandle|事前に宣言したデータベースハンドルを指定して、切断する接続を指定します。| **詳細の説明 [#od2ec64c] DISCONNECTは、すべてまたはデータベースハンドルで指定したデータベース接続を 切断し、その接続で使用されたリソースを解放します。gpre で -manual オプション が指定されていないかぎり、デフォルトのトランザクションをコミットします。 デフォルト以外のトランザクションはコミットを行わず、エラーを返します。~ &br; DISCONNECTによる切断を行う前に、接続中であるデータベースのトランザクション に対し、コミットまたはロールバックを行ってください。~ &br; DISCONNECTによって切断されたデータベースに再接続するには、再度 CONNECT を 行う必要があります。~ &br; **用例 [#w382afbe] すべて、埋め込みSQLの例です。 -すべてのデータベース接続を切断します。 EXEC SQL DISCONNECT DEFAULT; EXEC SQL DISCONNECT ALL; -指定したデータベースハンドルの接続を切断します。 EXEC SQL DISCONNECT DB1; EXEC SQL DISCONNECT DB1, DB2; **参照 [#sd084f2d] COMMIT , [[CONNECT>#connect]] , ROLLBACK , [[SET DATABASE>#set_database]] &br; &br; ---- &br; &br; &aname(set_database); *SET DATABASE [#p211fa27] データベースへアクセスするためのデータベースハンドルを宣言します。 SQL で使用できます。~ Firebirdでは、スキーマ機能は実装されていませんので、DATABASE を SCHEMA としても機能としては同じとなります。 **構文 [#z0da7b2d] SET {DATABASE | SCHEMA} dbhandle = [GLOBAL | STATIC | EXTERN][COMPILETIME][FILENAME] 'dbname' [USER 'name' PASSWORD 'string'] [RUNTIME [FILENAME] {'dbname' | :var} [USER {'name' | :var} PASSWORD {'string' |:var}] ]; &br; &br; |引数|説明|h |dbhandle|データベースハンドル。データベース指定に対するエイリアス| |~|・プログラム中で一意である必要があります。| |~|・以降のSQL文でデータベースハンドルが使用できるようになります。| |GLOBAL|デフォルトです。作成した宣言は、すべてのモジュールで有効になります。| |STATIC|宣言は、現在のモジュールでのみ有効になります。| |EXTERN|別のモジュールで宣言したものを参照して、新しいデータベースハンドルを宣言します。| |COMPILETIME|列参照のプリプロセッサ処理中に、使用するデータベースを認識します。| |~|・1つのデータベースが指定されていれば、その認識は動作時とコンパイル時の両方で行われます。| |'dbname'|データベースハンドルに割当てる、データベースファイルの設置場所とパス名です。指定方法はプラットフォームに依存します。| |RUNTIME|プリプロセッサ処理のために指定したデータベースと、実行時に使用するデータベースの指定が異なる場合に使用します。| |:var|ホスト言語変数により、データベースの指定やユーザー名、パスワードを与えます。| |USER 'name'|接続するデータベースサーバが正当に認識するユーザー名です。| |~|・データベースサーバに接続するためには、PASSWORD の指定が同時に必要です。| |~|・PCクライアント接続のために要求されます。(他の接続の場合は、オプションです。)| |PASSWORD 'string'|接続するデータベースサーバが正当に認識するパスワードです。| |~|・データベースサーバに接続するためには、USER の指定が同時に必要です。| |~|・PCクライアント接続のために要求されます。(他の接続の場合は、オプションです。)| &br; **詳細の説明 [#t3f77213] SET DATABASE は、データベースハンドルの宣言を行い、データベースの指定と 関連付けを行います。オプション指定により、コンパイル時と実行時で別の データベースを指定することが出来ます。複数のデータベースへの接続を行う (埋め込みSQL等を使用した)アプリケーションは、各データベースを識別する データベースハンドルを宣言するために、SET DATABASE を必ず使用する必要が あります。~ &br; 「dbhandle」は、アプリケーションで定義するデータベースハンドルです。 通常、データベースハンドルの名前は、実際のデータベースの名前を省略した ものを使用します。ここで宣言したデータベースハンドルは、以降の CONNECT, COMMIT, ROLLBACk で使用出来ます。それは、トランザクション中で2つ以上 の異なるデータベースに同じ名前のテーブルを含んでいる場合に、テーブル の区別を行うために使用出来ます。~ &br; 「dbname」は、データベースハンドルが実際のデータベースと接続するために 必要なファイルの指定を行うもので、内容はプラットフォームに依存します。 これは、データベースサーバが認識するファイル指定方法で記述される必要が あります。~ &br; GLOBAL, STATIC, EXTERN は、データベース宣言のスコープを指定するオプション です。デフォルトである GLOBAL は、データベースハンドルがアプリケーションの コードの全域で使用可能とすることを宣言します。STATIC は、ハンドルの宣言を 行ったモジュールでのみ使用可能とします。EXTERN は、データベースハンドルの 宣言が、別モジュールで GLOBAL と宣言されているものを参照するということを 示します。~ &br; オプション、COMPILETIME と RUNTIME を使用することにより、1つのデータベース ハンドルで、コンパイル時と実行時で別のデータベースを使用するように設定する ことが出来ます。省略時、または COMPILETIME のみの指定を行った場合には、 データベースエンジンはプリプロセッサ処理時と実行時で同一のデータベースを使用 します。~ &br; USER および PASSWORD パラメータの指定は、PCクライアントアプリケーション では必須です。しかし、他のリモート接続においてはオプションの場合もあります。 ユーザー名およびパスワードのセキュリティデータベースとの照合は、接続を行う 遠隔サーバによって行われます。 **用例 [#fd7b4d74] 例は、すべて埋め込みSQLプログラムの場合です。~ -データベースハンドルの宣言を行います。 EXEC SQL SET DATABASE DB1 = 'employee.fdb'; &br; -コンパイル時と実行時で、別のデータベースを使用できるようにした例です。 実行時にはホスト言語変数によって指定を行います。 EXEC SQL SET DATABASE EMDBP = 'employee.fdb' RUNTIME :db_name; **参照 [#h6dd4559] COMMIT , [[CONNECT>#connect]] , ROLLBACK , [[SELECT]] &br; &br; さらに詳細が知りたい場合は、Operations Guide の security database を 参照して下さい。~ &br; &br; ---- &br; &br; &aname(set_names); *SET NAMES [#fe5edc97] 以降の接続で有効になるキャラクタセットを設定します。 SQL および isql で使用できます。 **構文 [#l6f352a9] SET NAMES [charset | :var]; &br; ※ DSQLで使用する場合、終端文字のセミコロンは不要です。 isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端文字は必要です。 &br; &br; |引数|説明|h |charset|プロセスで使用する有効なキャラクタセットの名前です。デフォルトはNONEです。| |:var|キャラクタセット名をホスト言語変数で指定します。| |~|・事前に宣言されたキャラクタセット名であることが必要です。| |~|・SQLでのみ有効です。| **詳細の説明 [#a99269df] SET NAMES は、以降のデータベース接続で用いられるキャラクタセットを指定 します。これを設定することにより、サーバで設定されたキャラクタセットと クライアントアプリケーションの間で、文字コードの変換処理を行うことが可能 となります。~ &br; SET NAMES は、それが影響を及ぼす CONNECT 文よりも前に実行される必要が あります。~ &br; 組込みアプリケーションでは、SET NAMES のキャラクタセット指定をホスト変数 で行うことにより、対話的な設定も出来ます。~ &br; キャラクタセットの指定は、指定可能な(ソート順序に影響を与える)コレーション オーダーのサブセットを限定します。キャラクタセットとコレーションオーダーの 指定を行うと、SELECT,INSERT,UPDATEを行うときの列データに影響を与えます。 ''重要''~ デフォルトキャラクタセットを指定しない限り、デフォルトを NONE と指定した 場合と同じになります。キャラクタセットに NONE を指定するということは、 列には「特定のキャラクタセットがない」と仮定されたことになります。その場合、 格納や取り出すときにはオリジナルのデータがそのまま使用されます。 NONE を指定 した列には、どのようなキャラクタセットのデータもロードできます。 しかし、そのデータを NONE 以外のキャラクタセットを指定した列にロードすること は出来ません。それは、ソースからディストネーションに転送するときの文字変換が 行われないためです。したがって、大抵の場合はエラーを発生させます。~ &br; &br; **用例 [#b3204e21] -埋め込みSQLを使用したプログラムで SET NAMES を使用する例です。 EXEC SQL SET NAMES ISO8859_1; EXEC SQL SET DATABASE DB1 = 'employee.fdb'; EXEC SQL CONNECT; -isqlで SET NAMES を使用する例です。 SET NAMES EUCJ_0208; CONNECT 'employee.fdb' USER 'SYSDBA' PASSWORD 'masterkey'; **参照 [#f3847d4c] [[CONNECT>#connect]] , [[SET DATABASE>#set_database]] &br; &br; より詳細が知りたい場合は、[[キャラクタセット・データ型・権限]]や Data Definition Guide を参照して下さい。 &br; &br; &br; ---- &br; &br; &aname(set_sql_dialect); *SET SQL DIALECT [#a4ad65b4] データベースアクセス時の SQL Dialect 値を宣言します。 gpre, isql, wisql, SQL で使用可能です。~ **構文 [#lce9a08f] SET SQL DIALECT n; &br; &br; |引数|説明|h |n|SQL Dialect を指定します。以下の指定が可能です。| |~|1 : InterBase5.5 以前| |~|2 : 1から3へ移行時のフラグ| |~|3 : Firebird/InterBase6以降。拡張された数値、DATE、TIME、TIMESTAMP型が使用できる。| &br; **詳細の説明 [#s8801a66] SET SQL DIALECT により、データベースアクセスの SQL Dialect を宣言します。~ &br; Dailect は、1,2,3の中から指定できます。指定を行わなかった場合、コンパイル時 に指定したデータベースの Dialect になります。宣言を行った値とデフォルトの値 が異なった場合は警告が発生しますが、デフォルト値は宣言を行った値に修正 されます。~ &br; **用例 [#j0db0919] 埋め込み SQL プログラムでの例です。 EXEC SQL SET SQL DIALECT 3; **参照 [#oc5585ac] [[SHOW SQL DIALECT>#show_sql_dialect]] &br; &br; ---- &br; &br; &aname(show_sql_dialect); *SHOW SQL DIALECT [#w524ae44] 現在のクライアントの SQL Dialect 設定とデータベースの SQL Dialect 値 を返します。~ gpre, isql, wisql, SQL で使用できます。~ **構文 [#xd396bb9] SHOW SQL DIALECT; **詳細の説明 [#ua86bf56] SHOW SQL DIALECT により、現在のクライアントの SQL Dialect 設定と、 データベースの SQL Dialect 値が得られます。得られる設定/値は、1,2,3 のうち のどれかです。~ 詳細に関しては、[[SET SQL DIALECT>#set_sql_dialect]]を参照して下さい。 **用例 [#v5ff3010] 埋め込み SQL プログラムでの例です。 EXEC SQL SHOW SQL DIALECT; **参照 [#y0849820] [[SET SQL DIALECT>#set_sql_dialect]]
**詳細の説明 [#od2ec64c] DISCONNECTは、すべてまたはデータベースハンドルで指定したデータベース接続を 切断し、その接続で使用されたリソースを解放します。gpre で -manual オプション が指定されていないかぎり、デフォルトのトランザクションをコミットします。 デフォルト以外のトランザクションはコミットを行わず、エラーを返します。~ &br; DISCONNECTによる切断を行う前に、接続中であるデータベースのトランザクション に対し、コミットまたはロールバックを行ってください。~ &br; DISCONNECTによって切断されたデータベースに再接続するには、再度 CONNECT を 行う必要があります。~ &br;
Update
Preview
Do not change timestamp
Cancel
View Text Formatting Rules
New
Source
Rename
Front page
List of pages
Search
Recent changes
Backup
Referer
Log
Help
RSS of recent changes