API version 11

- ‐

LocalDB

ローカルDBの本体となるクラスで、SQLite3データベースを操作する機能を提供します。

データ型、型変換規則、構文、その他各種概念はSQLite3のものに準じます。


開くときにモードを指定し、書き込み可能なときにファイルが存在していなければ、自動的に新たに作成します。

ファイルを作成することができない、ロックされている等の理由により開けなければ、例外をスローします。

データベースへの変更操作が反映されない等の問題を起こす可能性があるため、LocalDBオブジェクトは使用後は必ずcloseメソッドを呼んでクローズしてください。


デフォルトでは、データベースは自動コミットモードがオンの状態で動作します。つまり、データベースの変更操作は即座に反映され、永続化されます。この操作はロールバックできません。

トランザクションを行いたい場合はbegin, commit, rollbackメソッドを使用します。

トランザクション中にLocalDBオブジェクトが削除された場合、未コミット状態なら自動的にロールバックします。

データ型について

CRSの各型の値は、データベース型に応じて適切に変換されます。

SQLite3データベースの型とCRSの型は下記のように対応づけて変換されます。

CRS型

SQLite型

整数

INT

文字列

TEXT

Number

REAL

null

NULL

ByteArray

BLOB

SQLite3には日付時刻型に対応するデータベース型が存在しないため、日付や時刻はいずれかの型にあわせて変換する必要があります。

一般的には下記の方法を選択し、日付や時刻型をデータベース上で表現します。

•ISO8601形式の文字列で表現する (例:2014-10-10T13:50:40+09:00)

•UNIXタイムスタンプ型の整数で表現する

•グレゴリオ暦の紀元前4714年11月24日を基点とするユリウス通日を、1日を1.0とした浮動小数点で表現する


SQLite3ではデータベースで使用可能な型のほかに、他のデータベースマネジメントシステムで使用可能な型を指定することができます。その場合、指定された型はSQLite3のいずれかの型に置き換えて用いられます。

たとえば、varchar(255)を型として指定した場合は、TEXT型が指定されたものとして見なします。

その場合、その型の列には256文字以上の文字を指定することができます。


Dateオブジェクトを直接LocalDBStatement.bindメソッドに指定した場合は、CRSにおいてDateオブジェクトを文字列に変換したものとして扱います。

この文字列はISO8601形式のフォーマットではないことに注意してください。

注釈

SQLiteは、性質上カラム型と異なる型のデータを格納することができます。このため、ある型のカラムから取得したデータが必ずその型の値であるとは限らないことに注意して下さい。

データベースファイルの暗号化について

現在LocalDBクラスは暗号化されたデータベースファイルを開いて操作したり新たに作成したりすることはできません。

典型的な使用方法

いくつかの各データの参照方法が用意されており、LocalDBStatementクラスを使用することで全件一括でCSV形式で取得するオペレータも用意されています。

これにより、指定条件にて全件のレコードを取得し表形式で表示可能なデータであれば、非常に簡単な操作で取得することができます。

特別に制御が必要でなければシンプルに記述することができます。

var st = db.createStatement("select * from testtable");
var records  = new CSVDocument();
^.FlexView1 << records << st;  /* FlexView ← CSVDocument  ← 全件データ */

デフォルトプロパティ

デフォルトプロパティは fileName です。