title: Session
author: KUMAGAI Hidetake
mailto: 

1. RDB::Session

Session クラスは，アプリケーションでデータベース接続を管理します。

Apollo(Delphi) はすべてのデータベースアプリケーション用に，グローバルにアクセス可能な SESSION という名前の Session オブジェクトを自動的に作成します。

データベース関係のオブジェクトは、（SessionList が Session を管理し）、Session が Database# を管理し、Dababase が Table# や Query# などの DataSet# を管理する、DataSet がレコードやフィールドを管理する、という関係にあります。

次のスクリプトでは、テーブルをオープンしたときに、自動的に Dataset オブジェクトが作られ、SESSION に登録される様子を示しています。
--ruby
require "phi" ; include Phi
require "RDB" ; include RDB
p SESSION.databases			
	##	[]
p Table.new('IBLocal',"employee").open.fields.values
	##	{	"JOB_COUNTRY"=>"USA", ... }
p SESSION.databases			
	##	[#<RDB::Database:0xfebb08>]
p SESSION.databases[0].database_name	
	##	"IBLocal"
--

SESSION は最初にボーランドデータベースエンジン（BDE）の情報を読み込みます。従って、Session クラスのメソッドを使うと、ＢＤＥの設定状況を調査することができます。また、ＢＤＥの設定とは異なった設定で（独自のエリアスを追加するなどの方法で）データベースを使用することが出来るようになります。さらに、スクリプトでＢＤＥ自体の設定を変更することもできるようになります。

注意：Delphi のヘルプではマルチスレッド用の説明がありますが、Apollo ではマルチスレッドはテストされていません。

注意：Session はコンポーネントにパスワードを提供します。

注意：Apollo でプロパティとして扱われている alias_names のようなメソッドは Delphi では GetAliasNames などの名前のメソッドになっている場合があります。

1.1. super class

%c:Object%

1.1. class methods

: new : RDB::Session
  ( まだ )

1.1. properties

: alias_driver_name(alias_name)
 
  指定したエリアスが使用しているドライバ名を返します。

: alias_names

  利用可能なエリアスの名前の配列を返します。

: alias_params(alias_name)

  指定したエリアスのパラメータの配列を返します。

: config_mode

  %c:config_mode% は，セッションに対して作成したエリアスをどのようにボーランドデータベースエンジン（BDE）が処理するかを示します。

  %c:config_mode% は，セッションの状況内で #add_alias または #add_standard_alias を使って作成されたエリアスを BDE でどのように処理するかを示します。また， %c:config_mode% はアプリケーションが #alias_names を呼び出したときにどの BDE エリアスがセッションにレポートされるかを示します。

  %c:config_mode% のデフォルト設定は %c:CM_ALL% です。これには %c:config_mode% に定義されているすべての設定項目が含まれます。以下にエリアスに設定できる BDE 環境設定モードを示します。

  : RDB::CFM_VIRTUAL
    BDE 環境設定ファイル（BDE 持続的ストア）のすべてのエリアスおよびローカルエリアスをそのセッションで利用できる
  : RDB::CFM_PERSISTENT
    BDE 環境設定ファイルのエリアス（BDE 持続的ストアに追加されたエリアス）だけをそのセッションで利用できる
  : RDB::CFM_SESSION
    そのセッション内で作成されたエリアスだけを利用できる

: databases

  オープンしている Database# オブジェクトの配列を返します。

: database_names

  利用可能な Database の名前を配列で返します。

: driver_names

  利用可能なドライバの名前の配列を返します。

1.1. methods

: add_alias( alias_name , driver_name , params )
  セッションにＢＤＥエリアスを追加します。
  alias_name : String
    追加するエリアスの名前（文字列）。他のエリアスと区別可能な一意の名前です。
  driver_name : String
    エリアスに使う SQL Link データベースドライバの名前です。利用可能なドライバは Session#driver_names で調べておくとよいでしょう。
  params : Strings
    エリアスのパラメータが入っている文字列リストです。ドライバによってパラメータは異なります。 Session#alias_params で似たようなエリアスのデータを調べておくとよいでしょう。

  InterBase では次のような感じになるようです。ドライバ名は「INTRBASE」であって「INTERBASE」ではないんですね。
  --ruby
params = [
  "SERVER NAME=Linux:/db/foo/bar.gdb",
  "USER NAME=bar",
  "OPEN MODE=READ/WRITE",
  "SCHEMA CACHE SIZE=8",
  "LANGDRIVER=",
  "SQLQRYMODE=",
  "SQLPASSTHRU MODE=SHARED AUTOCOMMIT",
  "SCHEMA CACHE TIME=-1",
  "MAX ROWS=-1",
  "BATCH COUNT=200",
  "ENABLE SCHEMA CACHE=FALSE",
  "SCHEMA CACHE DIR=",
  "ENABLE BCD=FALSE",
  "BLOBS TO CACHE=64",
  "BLOB SIZE=32",
]
SESSION.add_alias('baz', 'INTRBASE', params)
--

  : 注意
    ここで追加したものは、このセッションのみで有効であり、BDE のデータを書き換えるものではありません。BDE のデータを書き換えれエリアスを永続的に保存するには， #save_config_file を呼び出してからセッションを終了します。

  : 注意
    Paradox または dBASE エリアスを作成する場合には、 #add_standard_alias を使えばより簡単に作成できます。

: add_standard_alias(alias_name, path, default_driver)

  %c:add_standard_alias% を実行時に呼び出すと，Paradox，dBASE，または ASCII テーブルにセッション固有の BDE エリアスを作成します。
  : alias_name : String
    エリアスに割り当てる一意の名前です。
  : path  String
    データベースが格納されているディレクトリです。
  : default_driver : String
    エリアスで使う標準 BDE ドライバの名前です。
    %c:"PARADOX"，"DBASE"，"ASCIIDRV"% のいずれかを指定します。
    空文字列の場合 %c:"PARADOX"% に設定されます。
    %c:default_driver% は，拡張子を持たずテーブル型が %c:TT_DEFAULT% として定義されているテーブルを開こうとしたときに使用されます。

  : 注意
    SQL データベースのエリアスを作成するには， #add_standard_alias のかわりに #add_alias を呼び出します。  

: table_names(database_name, pattern, extension?, system_table?)

  指定したデータベースで利用可能なテーブル名の配列を返します。

  %c:rdb.rb% で引数を省略可能にする予定。

  : pattern : String
    区切り記号文字列を指定して，その文字列に一致するものだけを返すようにテーブルを制限します。
    ワイルドカードを使えます。制限されていないすべてのファイルを一致させるために空文字列を渡せます。

  : extension? : Boolean
    Paradox および dBASE 上で検索する場合， %c:true% に設定するとテーブル名にファイルの拡張子が追加されます。
    SQL ベースのデータベースでは %c:false% に設定します。

  : system_table? : Boolean
    SQL ベースのデータベースでは，データベース構造を定義するデータテーブルおよびシステムテーブルを返すように %c:true% に設定します。
    Paradox および dBASE では %c:false% に設定してください。

: save_config_file

  %c:save_config_file% は，ボーランドデータベースエンジン（BDE）の持続的ストア内の現在の情報をメモリからディスク上の BDE 環境設定ファイルへ書き込みます。

  %c:save_config_file% を呼び出すと，BDE 環境設定に対するすべての変更情報がメモリからディスク上の BDE 環境設定ファイルに書き込まれます。BDE が初期化されるときには現在の BDE 環境設定ファイルはメモリ内の持続的ストアに読み込まれます。アプリケーションはメモリ内の環境設定ファイルの読み込みまたは修正ができますが，修正できるのはメモリ上だけでディスクには書き込まれません。

  たとえばアプリケーションが新しい BDE エリアスを #add_alias を使って作成する場合，エリアスがメモリ内にあるのは BDE がメモリ内に読み出されているだけです。BDE を使うすべてのアプリケーションが新しいエリアスを利用できるように保存するには %c:save_config_file% を呼び出してください。 %c:save_config_file% は持続的環境設定ファイルのメモリイメージを環境設定ファイルのディスクイメージに上書きします。

  : 注意
    セッションの #config_mode が %c:CFM_SESSION% のときは，追加されたエリアスは BDE 環境設定ファイルに保存できません。

----

: database_count

: modify_alias
  ( 未テスト )

