SQLインターフェース

第0.43版 2016年10月23日
第0.19版 2000年12月17日

リレーショナルDBにアクセスするためのSQLインタフェース ADBC
(Altair DataBase Connection)の説明をします。
Windows版では、ODBCを使用しています。
Linux版はPostgresQLはlibpqを使用し、MySQLはmysqlclientを使用しています。

list al_sql("connect", connectInfo, dbType, null, null);

データベース接続を行いそのコネクションを返します。

返却値がどこからも参照されなくなると接続は自動的にクローズされます。
エラーが発生した場合は、文字列を返します。

PostgreSQL/MySQLの場合

connectInfoの形式は、(host, port, db_name, user, password)です。
Windows版のODBCでは、データソース名db_name、ユーザ名user、パスワードpasswdで接続します。
Linux版のPostgresQL/MySQLでは、ホスト名host、ポート番号port、データベース名db_name、
ユーザ名user、パスワードpasswdで接続します。port番号がnullだとデフォルトのポート番号が使われます。
Windows版ではdbTypeは無視されます。
Linux版では、dbTypeは、PostgreSQLを使うときには "postgresql"、MySQLを使うときは"mysql" です。

list al_sql("statement", conn, null, null, null);

ステートメントを作成しそれを返します。

返却値がどこからも参照されなくなるとステートメントは自動的にクローズされます。
エラーが発生した場合は、文字列を返します。

list al_sql("prepare", stat, sql, null, null);

SQL文を準備をします。

変数statはステートメントでなければなりません。
変数sqlが準備されるSQL文になります。
成功するとnullが、失敗すると文字列が返ります。

list al_sql("execute", stat, sql, values, null);

ステートメントstatで SQL文を実行します。
sqlが非nullの場合は、SQL文sqlを直接実行します。
sqlが非nullの場合は、valuesは無視されます。
sqlがnullの場合は、prepareで準備したSQL文を実行します。
sqlがnullでvaluesが非nullの場合は、
SQL文中の文字"?"の部分をvaluesに含まれる値で置き換えます。
valuesの形式は以下です。
   values = ()-/-/=>value
   value = <integer> | <real> | <string> | <date> | <binary>
   date = (year, month, day, hour, minute, second)

list al_sql("result", stat, types, count, null);

"execute"で実行したSQL文の実行結果を取り出します。

結果をフェッチし、結果をtypesに従って返します。
countが非負整数以外のときは結果の全件を返します。
countが非負整数のときは結果をcount件単位で返し、繰り返し実行すれば残りが検索されます。
typesの形式および戻り値の形式は以下です。
   types = ()-/-/=>type
   type = "integer" | "real" | "string" | "date" | "binary"
   ret_val = ()-/-/=>()-/n/=>val  (n = 1, 2, ...)

list al_sql("commit", conn, null, null, null);

コミットを行います。

変数connはデータベースコネクションでなければなりません。
成功するとnullが、失敗すると文字列が返ります。

list al_sql("rollback", conn, null, null, null);

ロールバックを行います。

変数connはデータベースコネクションでなければなりません。
成功するとnullが、失敗すると文字列が返ります。

void al_sql("finalize", conn, null, null, null);

DBのクライアント環境の最終処理を行います。

list al_sql("col_names", stat, null, null, null);

DBテーブルのカラム名を取得します。
executeでSELECT文を実行した後そのSELECT文で選択されているカラム名が
以下の形式で返ります。
   ()-/n/=>column_name  (n = 1, 2, ...)
通常 "SELECT * FROM ..."のSQL文を発行した後でテーブルの全カラム名を取得するのに使います。
失敗すると文字列が返ります。

list al_sql("col_types", stat, null, null, null);

DBテーブルのカラムの型/桁数/NOT-NULLを取得します。
executeでSELECT文を実行した後そのSELECT文で選択されているカラムの型/桁数/NOT-NULLが
以下の形式で返ります。
   ()-/n/=>()-/"type"/->type
             -/"size"/->size
             -/"decimal"/->decimal
             (-/"nullable"/->1)
   type = "integer" | "decimal" | "real" | "varchar" | "char" | "date" | "binary"
   size:    typeが "integer"の時は桁数
            typeが "decimal"の時は整数部分の桁数
            typeが "varchar"の時は最大文字数
            typeが "char"の時は文字数
   decimal: typeが "decimal"の時は少数部分の桁数
   nullable: NULL値を許すなら1、許さないならnull
失敗すると文字列が返ります。