データベースへの接続

データベース操作を実行するには、まずデータベースファイルへの接続を開く必要があります。SQLConnection インスタンスは 1 つ以上のデータベースへの接続を表すために使用されます。SQLConnection インスタンスを使用して接続した最初のデータベースを「メイン」データベースと呼びます。このデータベースには、open() メソッド(同期実行モードの場合)または openAsync() メソッド(非同期実行モードの場合)を使用して接続します。

非同期 openAsync() 操作を使用してデータベースを開く場合は、SQLConnection インスタンスの open イベントに登録して、openAsync() 操作が完了したら通知されるようにします。また、操作が失敗したかどうかを確認できるように、SQLConnection インスタンスの error イベントに登録します。

次の例は、既存のデータベースファイルを非同期実行用に開く方法を示しています。このデータベースファイルは「DBSample.db」という名前で、ユーザのアプリケーション格納ディレクトリにあります。

// Include AIRAliases.js to use air.* shortcuts 
var conn = new air.SQLConnection(); 
conn.addEventListener(air.SQLEvent.OPEN, openHandler); 
conn.addEventListener(air.SQLErrorEvent.ERROR, errorHandler); 
var dbFile = air.File.applicationStorageDirectory.resolvePath("DBSample.db"); 
conn.openAsync(dbFile, air.SQLMode.UPDATE); 
function openHandler(event) 
{ 
    air.trace("the database opened successfully"); 
} 
function errorHandler(event) 
{ 
    air.trace("Error message:", event.error.message); 
    air.trace("Details:", event.error.details); 
}

次の例は、既存のデータベースファイルを同期実行用に開く方法を示しています。このデータベースファイルは「DBSample.db」という名前で、ユーザのアプリケーション格納ディレクトリにあります。

// Include AIRAliases.js to use air.* shortcuts 
var conn = new air.SQLConnection(); 
var dbFile = air.File.applicationStorageDirectory.resolvePath("DBSample.db"); 
try 
{ 
    conn.open(dbFile, air.SQLMode.UPDATE); 
    air.trace("the database opened successfully"); 
} 
catch (error) 
{ 
    air.trace("Error message:", error.message); 
    air.trace("Details:", error.details); 
}

非同期実行の例の openAsync() メソッドの呼び出しと、同期実行の例の open() メソッドの呼び出しで、2 番目の引数が定数 SQLMode.UPDATE になっていることに注意してください。SQLMode.UPDATE を 2 番目のパラメータ(openMode)に指定すると、指定したファイルが存在しない場合にエラーが送出されます。SQLMode.CREATEopenMode パラメータに渡すと(または openMode パラメータをオフのままにすると)、指定したファイルが存在しない場合にデータベースファイルが作成されます。ただし、ファイルが存在する場合は、ファイルが開かれます。この動作は、SQLMode.Update を使用した場合と同じです。そのほか、SQLMode.READopenMode パラメータに指定して既存のデータベースを読み取り専用モードで開くこともできます。その場合は、データベースからデータを取得することはできますが、データを追加したり、削除したり、変更したりすることはできません。