我是否必须在第一批sqlite db中创建所有表?

时间:2012-07-08 10:30:05

标签: javascript html sqlite cordova

我正在创建一个Sqlite DB&我有很多页面要访问数据库。

如果我要创建一个新表,我是否必须再次执行整个数据库?

如果我有一个声明(删除,插入,......)..我可以从代码中的任何位置访问数据库吗?我需要的时候调用“db.executesql()”?

1 个答案:

答案 0 :(得分:2)

正如http://docs.phonegap.com/en/1.9.0/cordova_storage_storage.md.html#Storage上的PhoneGap文档所述,您可以这样做:

// Cordova is ready
function onDeviceReady() {
    var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
    db.transaction(populateDB, errorCB, successCB);
}

// Populate the database 
function populateDB(tx) {
     tx.executeSql('DROP TABLE IF EXISTS DEMO');
     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

// Transaction error callback
function errorCB(tx, err) {
    alert("Error processing SQL: "+err);
}

// Transaction success callback
function successCB() {
    alert("success!");
}

因此,您需要先打开数据库,然后执行sql,如示例所示:

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);

出于不同的目的,只需使用不同的sql执行代码创建不同的函数,就像上面的populateDB一样。