繁体   English   中英

SQLite在混合应用程序中不起作用

[英]Sqlite not working in hybrid app

我正在使用Monaca IDE开发一个混合应用程序,问题是我正在使用的数据库是在Sqlite中创建的,并且在预览中效果很好,我什至还有另一个具有相同DB方案的项目,并且效果也很好,但是当我尝试制作.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);});
    });
});

}

我不确定是否需要创建这样的回调地狱。 您应该考虑到您所依赖的是每条语句都可以通过,并且没有错误处理。 我不喜欢Monaca-所以不确定他们使用的是哪个cordova SQLite插件,但是我看了看他们关于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插件不同。

尽管Kerosene关于如何编写这些语句是正确的,但是我遇到的问题是我的Jquery导入,因为我有:

<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>

这样(我不知道为什么),它可以在预览中工作,但不能在设备中工作

当我将其更改为:

<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>

很棒!,

谢谢煤油,您是唯一尝试提供帮助的人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM