我正在使用Visual Studio
,DevExtreme framework
和Cordova API
开发Android应用。我的应用程序必须在线上和离线时工作。它使用涵盖在线部分的Odata Service
连接到数据库。对于离线部分,我想设置一个本地数据库存储。我遵循了这个例子:http://blog.darkcrimson.com/2010/05/local-databases/这是我的代码的一部分:
首先我在视图模型中声明了一个动作,当单击一个按钮时会调用此动作。
var viewModel = {
dataSource: dataSource,
viewShown: handleViewShown,
viewDisposing: handleViewDisposing,
ladenDatabase: function (e) {
dataSource.select("Oid", "Dossiernr");
dataSource.load().done(function (result) {
//make db and fill it with objects from sql database
initDatabase();
alert(result[0]);
});
}
}
function initDatabase() {
try {
if (!window.openDatabase) {
alert("Databases are not supported in this browser.");
} else {
alert("Databases are supported in this browser.");
var shortName = 'DEMODB';
var version = '1.0';
var displayName = 'DEMO Database';
var maxSize = 100000; // bytes
DEMODB = openDatabase(shortName, version, displayName, maxSize);
createTables();
// selectAll();
}
} catch (e) {
if (e == 2) {
// Version number mismatch.
console.log("Invalid database version.");
alert("Invalid database version.");
} else {
console.log("Unknown error " + e + ".");
alert("unknown error " + e + "!");
}
return;
}
}
function createTables() {
alert("Creating Tables!");
DEMODB.transaction(
function (transaction) {
transaction.executeSql('CREATE TABLE IF NOT EXISTS page_settings(id INTEGER NOT NULL PRIMARY KEY, fname TEXT NOT NULL,bgcolor TEXT NOT NULL, font TEXT, favcar TEXT);', [], nullDataHandler, errorHandler);
}
);
prePopulate();
}
function prePopulate() {
alert("PrePopulating !!!");
DEMODB.transaction(
function (transaction) {
//Optional Starter Data when page is initialized
var data = ['1', 'none', '#B3B4EF', 'Helvetica', 'Porsche 911 GT3'];
transaction.executeSql("INSERT INTO page_settings(id, fname, bgcolor, font, favcar) VALUES (?, ?, ?, ?, ?)", [data[0], data[1], data[2], data[3], data[4]]);
}
);
}
问题是,当我运行此代码时,它首先说:此浏览器支持数据库,这样做很好。当我点击这一行时发生错误:
DEMODB = openDatabase(shortName, version, displayName, maxSize);
我收到此错误消息:
参考错误:未定义DEMODB。
我需要在哪里定义?