Sqlite在混合应用程序中不工作

Sqlite not working in hybrid app

本文关键字:工作 应用程序 混合 Sqlite      更新时间:2023-12-12

我正在使用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>

工作得很好!,

谢谢Kerosene,你是唯一一个试图帮助你的人!