データベース(SQLite)

SQLite3のデータベースを操作することができます。

db = droid.openDatabase(file) データベースを開く
droid.executeSql(db, SQL, callback_ok, callback_ng) SQLを実行して結果を得る
droid.executeSqlSync(db, SQL) executeSQLと同じだが、結果が取得できるまで待機する

以下、利用例です。

<h2>Database(SQLite)</h2>
<div id="db_buttons_div" class="buttons">
<button class="func" onclick="openDB()">Open DB</button>
<button class="func" onclick="insertDB()">Insert</button>
<button class="func" onclick="showDB()">Show</button>
<button class="func" onclick="clearDB()">Clear</button>
</div>
<div class="disp" id="db_div">
&nbsp; ***
</div>
<script>
var db = null;
function db_lockUI() {
    $("db_buttons_div").style.visible = "hidden";
}
function db_unlockUI() {
    $("db_buttons_div").style.visible = "visible";
}
function openDB(){
    db_lockUI();
    db = droid.openDatabase("test3.db");
    droid.executeSql(db,
        "CREATE TABLE IF NOT EXISTS test (name,value)",
        function(){ alert('Open database!'); db_unlockUI(); },
        function(e){ alert('Create database error:' + e); db_unlockUI(); }
    );
}
function insertDB(){
    if (db == null) { alert('DB not opened.'); return; }
    db_lockUI();
    var name = prompt("input name");
    var val = prompt("input value");
    val = parseInt(val);
    droid.executeSql(db, 
        "INSERT INTO test (name,value)VALUES('"+name+"',"+val+")",
        function(){ alert("success!"); showDB(); db_unlockUI(); },
        function(e){ alert("insert error:" + e); db_unlockUI(); }
    );
}
function showDB() {
    if (db == null) { alert('DB not opened.'); return; }
    droid.executeSql(db, 
        "SELECT * FROM test", 
        testDB_selectResult,
        function(e){alert("select error:" + e); db_unlockUI();}
    );
}
function testDB_selectResult(result) {
    var txt = "";
    for (var i in result) {
        var line = result[i];
        for (var key in line) {
            txt += key + ":" + line[key] + "<br/>";
        }
    }
    $("db_div").innerHTML = txt;
    db_unlockUI();
}
function clearDB() {
    db_lockUI();
    droid.executeSql(db, 
        "DELETE from test",
        function(){ alert("success!"); db_unlockUI(); },
        function(e){alert("insert error:" + e); db_unlockUI(); }
    );
    $('db_div').innerHTML = "clear";
}
</script>        

データベースの配布に関して

ちなみに、データベース(SQLite3)をアプリに梱包して配布するには、次のTipsが役立ちます。