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も自動的にオープンされます。