我的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的新手,请帮助我。
答案 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(....
它应该有用。