javascript - Sqlite 无法在混合应用程序中工作

标签 javascript html angularjs sqlite monaca

我正在使用 Monaca IDE 开发一个混合应用程序,问题是我使用的数据库是用 Sqlite 制作的,它在预览中运行得很好,我什至还有另一个具有相同数据库方案的项目,它运行得很好也是,但是当我尝试制作 .apk 时,应用程序可以工作,但数据库从未创建,我不知道我是否应该做一些我不知道的其他事情,或者你们是否有任何想法这里可能发生了什么!

注意:在 Firefox 中打开 Monaca 预览也不起作用

这是我的数据库代码:

$(document).ready(function(){
     onDeviceReady();
});


function onDeviceReady() {
db = window.openDatabase('antel', '1.0', 'primera', 2 * 1024 * 1024);
db.transaction(crearBase);
};


function crearBase(tx) {
tx.executeSql('Create table if not exists PARADA (nombre TEXT PRIMARY KEY)', [], function (tx) {
    tx.executeSql('Create table if not exists REGISTRO (id INTEGER PRIMARY KEY autoincrement, nomParada TEXT REFERENCES PARADA (nombre), tipo TEXT ,km TEXT,fecha TEXT,hora TEXT)', [], function (tx) {
         tx.executeSql('Create table if not exists EMAIL (id INTEGER PRIMARY KEY autoincrement,nombre TEXT)', [], function (tx) {
            tx.executeSql('Select nombre FROM PARADA',[],meFijoSiEsVacia);});
    });
});

}

最佳答案

我不确定您是否需要创建这样的回调 hell 。您应该考虑到您所依赖的每条语句都运行良好并且没有错误处理。我不喜欢 Monaca - 所以不确定他们使用的是哪个 cordova SQLite 插件,但我查看了 their documentation regarding SQLite

他们正在执行打开sql事务的所有语句:

function onDeviceReady() {
    var db = window.openDatabase('antel', '1.0', 'primera', 2 * 1024 * 1024);
    db.transaction(crearBase, errorCB, successCB);
};


function crearBase(tx) {
    tx.executeSql('Create table if not exists PARADA (nombre TEXT PRIMARY KEY)');
    tx.executeSql('Create table if not exists REGISTRO (id INTEGER PRIMARY KEY autoincrement, nomParada TEXT REFERENCES PARADA (nombre), tipo TEXT ,km TEXT,fecha TEXT,hora TEXT)');
    tx.executeSql('Create table if not exists EMAIL (id INTEGER PRIMARY KEY autoincrement,nombre TEXT)');
    tx.executeSql('Select nombre FROM PARADA');
}

function errorCB(err) {
    console.log("Error occured while executing SQL: "+err.code);
}

function successCB() {
    console.log("all fine");
}

您嵌套所有这些成功函数可能是有原因的,但您还应该处理错误回调。仅仅说“预览有效,设备无效”是不够的。浏览器环境当然与 Cordova 插件不同。

关于javascript - Sqlite 无法在混合应用程序中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36410346/

相关文章:

html - hta:使用 css 更改字体大小问题

javascript - 如何使用 ng-grid 在单元格模板上应用字段

javascript - 如何从 Firebase 数据库中选择 JSON 对象?

html - 无法更改网页字体

javascript - 在 Kendo 图表条上方排列 float div

javascript - 表格行中的 CSS 样式问题

javascript - 无法使用 Angular ui-router 转换状态

javascript - Angular 范围变量和插件范围

javascript - 如何使用中间件为 REST API 创建用户组安全

javascript - 如何撤销 element.style 属性的设置?