DBISAMは以下のコンポーネント群を提供します
TDBISAMSession |TDBISAMDatabase | |TDataSet |TDBISAMDataSet |TDBISAMDBDataSet |------------- | | TDBISAMTable TDBISAMQuery
TDBISAMSession
TDBISAMSessionは、データベースとの接続をまとめて管理するコンポーネントです。1つのSessionの元で複数のデータベース(ディレクトリ)にアクセスができます。 TDBISAMDatabase/TDBISAMQuery/TDBISAMTableは、 SessionNameプロパティで、有効なセッションを参照して使いま す。
Sessionは、データベースに接続する「ユーザ」のようなもので、C/S版においては実際にユーザID/パスワード/IPアドレス等を与えてサーバに接続できます(リモートセッション)。通常のアプリケーションにおいては、一つあれば十分ですが、マルチスレッド・アプリケーションの場合は各スレッドに独立のセッションを持たせます。
DBISAMのエンジンが初期化されるときに、デフォルトセッションがグローバル変数Sessionとして作成され、ユーザID/パスワードの設定が不要なローカルセッションにおいては、このデフォルトセッション(変数Session: TDBISAMSession, SessionName=Default)を利用することができるため、TDBISAMSessionコンポーネントを開発者が配置するかどうかは好みの問題です。
TDBISAMDatabase
TDBISAMDatabaseは、DBISAMエンジンが管理する「データベース」に対応するコンポーネントです。ローカルセッションの場合、データベースは、Directoryプロパティで与えられる物理ディレクトリに対応し、リモートセッションの場合には、DBISAMサーバ上で予め定義されたデータベースをRemoteDatabaseプロパティで参照します。
TDBISAMTable/TDBISAMQueryは、DatabaseNameプロパティで、有効なデータベースを参照して使います
DBISAMは、データベースの単位で、トランザクションの開始/コミット/ロールバックを行います。(複数のデータベースに跨るトランザクションは想定していません)
TDBISAMTable
TDBISAMTableはDBISAMのテーブルに対応します。データアクセスに関してはTDBISAMQueryの方がよく使われるでしょうが、TDBISAMTableを用いるとテーブルロックが可能です。テーブルの最適化や修復、テーブル構造の変更(カラムやインデックスの追加など)を行うためのメソッドが用意されています。TDatabaseから継承されているコンポーネントなので、データベース対応コンポーネントが使えます
TDBISAMQuery
SQLを用いてDDL(Data Definition Language), DML(Data Manipulation Language)を実行します。TDatabaseから継承されているコンポーネントなので、データベース対応コンポーネントが使えます。
データベース・セッションの自動オープン
TDBISAMTable/TDBISAMQueryを開く (Active:=True/ExecSQL/Open)際に、関連するTDBISAMSessionがクローズされていた場合は自動的にオープンされ、さらに関連するTDBISAMDatabaseも自動的にオープンされます。