[Firebird Wiki]

Edit of CONNECT

  • ホーム
  • 差分
  • バックアップ
  • リロード
  • 一覧
  • 検索
  • 最終更新
  • ヘルプ
  • ログイン

  1. CONNECT
  2. Edit of CONNECT
  • テキスト整形のルールを表示する

    • 新規
    • ソース
    • 名前変更
    • ホーム
    • 一覧
    • 検索
    • 最終更新
    • バックアップ
    • リンク元
    • ログ
    • ヘルプ
    • 最終更新のRSS
    Founded by anonymous
    Powered by PukiWiki Advance v 2.0.2. Processing time: 0.503 sec.
    Original Theme Design by PukiWiki Plus! Team.
    PukiWiki Advance HTML 5

    Edit of CONNECT[TOC]

    undefined
    差分
    [[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]]
    絵文字
    文字色
    ヒント
    色指定は、最初に選択した色が文字色、次に選択した色が背景色になります。

    選択範囲を処理後は、その範囲が選択したままになっています。
    続けて文字を入力する場合は、[ → ]キーでカーソルを移動してから入力してください。

    [ ☺ ] ボタンは、絵文字パレットを開きます。
    [ ⏎ ] ボタンは、改行を入れます。
    [ &# ] ボタンは、選択文字列を数値文字参照に変換します。
    [ ]は、このページの送信前の編集内容をフラッシュします。