语句回调引发了一个异常的phonegap错误

时间:2015-01-16 06:39:52

标签: sqlite cordova

我的phonegap代码在执行SQL lite查询时给出了一个错误“语句回调引发异常或语句错误回调没有返回false”。

我的代码是:

$(document).ready(function(){
//add listener when device ready
document.addEventListener("deviceready", onDeviceReady, false);
var db = window.openDatabase("railway", "1.0", "Railway Ticket", 200000); //will create database Dummy_DB or open it

//function will be called when device ready
function onDeviceReady(){
    db.transaction(populateDB, errorCB, isLoggedin);
}

//create table and insert some record
function populateDB(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, username TEXT NOT NULL, password TEXT NOT NULL, email TEXT NOT NULL)');
    tx.executeSql('CREATE TABLE IF NOT EXISTS logedinuser (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, password TEXT NOT NULL, remember TEXT NOT NULL)');
    tx.executeSql('INSERT INTO users(name,username,password,email) VALUES ("Administrator", "admin", "admin", "admin@gmail.com")');
    tx.executeSql('INSERT INTO logedinuser(username,password,remember) VALUES ("admin", "admin", "1")');
}

//function will be called when an error occurred
function errorCB(err) {
    alert("Error processing SQL: "+err.code+ " message=" + err.message);
}
function errorCB2(err2) {
    alert("Error processing SQL 2: "+err2.code+ " message=" + err2.message);
}
function errorCB3(err3) {
    alert("Error processing SQL 3: "+err3.code+ " message=" + err3.message);
}

//function will be called when process succeed
function isLoggedin(tx) {
    //alert("success!");
    db.transaction(chklogin,errorCB2);
}

//select all from SoccerPlayer
function chklogin(tx){
    tx.executeSql('SELECT * FROM logedinuser',[],lguserresult,errorCB3);
}

function lguserresult(tx,result){
    var nores = result.rows.length;
    if(nores <= '0')
    {
    alert('Please Login or Create new account!');
    }
    else
    {
    $.each(result.rows,function(index){
    var row1 = result.rows.item(index);
    });

    var remember = row1['remember'];
    if(remember == '1')
        {
        window.location.href="index.html";
        }
        else
        {
        alert('Please Login or Create new account!');
        }
    }
}
});

错误发生在SQL 2中。“处理SQL2时出错”

在从row1变量中的表中获取数据时,在日志中显示另一个错误。 代码:

    $.each(result.rows,function(index){
    var row1 = result.rows.item(index);
    });

我是phonegap的新手,请帮助我。

1 个答案:

答案 0 :(得分:0)

$(document).ready(function(){}函数调用中,您已定义

var db = window.opendatabase(...

var关键字使变量db成为函数的本地变量。因此,变量db在函数范围之外不可见/可用。因此函数
中的变量db function isLoggedin(tx) { //alert("success!"); db.transaction(chklogin,errorCB2); }
未定义。

您需要删除db关键字,才能使变量var 全局。即将该陈述重新定义为

db = window.opendatabase(....

它应该有用。