我建议包含一个文件,该文件返回包含您的数据的JSON 字符串。
在应用程序初始加载时,检查数据库是否已填充,如果未填充,则运行函数来获取对象,然后将其加载到数据库中。
您可以使用简单的$.get() 方法并使用HTML5 规范来处理webSQL。
这是一个例子:
我首先创建一个名为 db 的对象 -
var db;
dbHandler = {
initialize: function() {
db = window.openDatabase('appdb', '1.0', 'AppDB', 5000000);
db.transaction(dbHandler.createDB, dbHandler.errorCB, dbHandler.checkDB);
},
createDB: function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS _TABLE_NAME_ (itemID unique, someField, someOtherField)');
},
checkDB: function(tx) {
tx.executeSql('SELECT * FROM _TABLE_NAME_', [], dbHandler.checkDBcallBack, dbHandler.errorCB);
},
checkDBcallBack: function(tx, results) {
if(results.rows.length > 0) {
return true;
}
else {
$.get('local/file/with/json/object.json', function(data) {
dbHandler.populateDB(JSON.parse(data));
});
}
},
populateDB: function(records) {
var len = records;
db.transaction(function(tx) {
for(var i =0; i < len; i++) {
tx.executeSql('INSERT INTO _TABLE_NAME_ (someField, someOtherField) VALUES (?,?)', [], dbHandler.successCB, dbHandler.errorCB);
}
},
dbHandler.errorCB,
dbHandler.successCB);
},
errorCB: function(tx, err) {
//console.log(err);
},
successCB: function(msg) {
if(msg) {
//navigator.notification.alert(msg);
}
}
};
一旦deviceready 事件触发调用
dbHandler.initialize();
这可能不是开箱即用的,但应该是您正在寻找的一个好的开始。