データベース操作を実行するには、まずデータベースファイルへの接続を開く必要があります。
SQLConnection
インスタンスは 1 つ以上のデータベースへの接続を表すために使用されます。SQLConnection インスタンスを使用して接続した最初のデータベースを「メイン」データベースと呼びます。このデータベースには、
open()
メソッド(同期実行モードの場合)または
openAsync()
メソッド(非同期実行モードの場合)を使用して接続します。
非同期
openAsync()
操作を使用してデータベースを開く場合は、
openAsync()
操作が完了したら通知されるように、SQLConnection インスタンスの
open
イベントに登録します。また、操作が失敗したかどうかを確認できるように、SQLConnection インスタンスの
error
イベントに登録します。
次の例は、既存のデータベースファイルを非同期実行用に開く方法を示しています。このデータベースファイルは「DBSample.db」という名前で、ユーザーの
アプリケーション記憶領域ディレクトリの参照
に保存されています。
import flash.data.SQLConnection;
import flash.data.SQLMode;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.filesystem.File;
var conn:SQLConnection = new SQLConnection();
conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
// The database file is in the application storage directory
var folder:File = File.applicationStorageDirectory;
var dbFile:File = folder.resolvePath("DBSample.db");
conn.openAsync(dbFile, SQLMode.UPDATE);
function openHandler(event:SQLEvent):void
{
trace("the database opened successfully");
}
function errorHandler(event:SQLErrorEvent):void
{
trace("Error message:", event.error.message);
trace("Details:", event.error.details);
}
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script>
<![CDATA[
import flash.data.SQLConnection;
import flash.data.SQLMode;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.filesystem.File;
private function init():void
{
var conn:SQLConnection = new SQLConnection();
conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
// The database file is in the application storage directory
var folder:File = File.applicationStorageDirectory;
var dbFile:File = folder.resolvePath("DBSample.db");
conn.openAsync(dbFile, SQLMode.UPDATE);
}
private function openHandler(event:SQLEvent):void
{
trace("the database opened successfully");
}
private function errorHandler(event:SQLErrorEvent):void
{
trace("Error message:", event.error.message);
trace("Details:", event.error.details);
}
]]>
</mx:Script>
</mx:WindowedApplication>
次の例は、既存のデータベースファイルを同期実行用に開く方法を示しています。このデータベースファイルは「DBSample.db」という名前で、ユーザーの
アプリケーション記憶領域ディレクトリの参照
に保存されています。
import flash.data.SQLConnection;
import flash.data.SQLMode;
import flash.errors.SQLError;
import flash.filesystem.File;
var conn:SQLConnection = new SQLConnection();
// The database file is in the application storage directory
var folder:File = File.applicationStorageDirectory;
var dbFile:File = folder.resolvePath("DBSample.db");
try
{
conn.open(dbFile, SQLMode.UPDATE);
trace("the database opened successfully");
}
catch (error:SQLError)
{
trace("Error message:", error.message);
trace("Details:", error.details);
}
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script>
<![CDATA[
import flash.data.SQLConnection;
import flash.data.SQLMode;
import flash.errors.SQLError;
import flash.filesystem.File;
private function init():void
{
var conn:SQLConnection = new SQLConnection();
// The database file is in the application storage directory
var folder:File = File.applicationStorageDirectory;
var dbFile:File = folder.resolvePath("DBSample.db");
try
{
conn.open(dbFile, SQLMode.UPDATE);
trace("the database opened successfully");
}
catch (error:SQLError)
{
trace("Error message:", error.message);
trace("Details:", error.details);
}
}
]]>
</mx:Script>
</mx:WindowedApplication>
非同期実行の例の
openAsync()
メソッドの呼び出しと、同期実行の例の
open()
メソッドの呼び出しで、2 番目の引数が定数
SQLMode.UPDATE
になっていることに注意してください。2 番目のパラメーター(
openMode
)に
SQLMode.UPDATE
を指定すると、指定したファイルが存在しない場合にエラーが送出されます。
openMode
パラメーターに
SQLMode.CREATE
を渡すと(または
openMode
パラメーターをオフのままにすると)、指定したファイルが存在しない場合にデータベースファイルが作成されます。ただし、ファイルが存在する場合は、ファイルが開かれます。この動作は、
SQLMode.Update
を使用した場合と同じです。そのほか、
openMode
パラメーターに
SQLMode.READ
を指定して既存のデータベースを読み取り専用モードで開くこともできます。その場合は、データベースからデータを取得することはできますが、データを追加したり、削除したり、変更したりすることはできません。