我正在使用Netbeans IDE中的Cordova框架构建Android应用程序。 我已经构建了一个只有几个表的小型数据库,并且能够将数据插入到表中,但是,我发现很难检索数据。
每次查询数据库时,所有项都将返回为undefined。数据插入正常,因为每次添加新行时行数都会增加并调用它:
var len = results.rows.length;
alert(len);
这是我的代码:
function readRecord(){
var db = window.openDatabase("dbResults", "1.0", "Results DB", 1000000);
db.transaction(getRecord, errorCB);
}
function getRecord(tx){
try
{
tx.executeSql('SELECT [time], bglevel FROM RECORDS', [], recordSuccess, errorCB);
}
catch(err)
{
alert(err.message);
}
}
function recordSuccess(tx, results) {
var len = results.rows.length;
alert(len);
var res = '';
for (var i=0; i<len; i++){
try
{
alert("Row = " + i.toString() + " Time = " + results.rows.item(i).time);
alert("Row = " + i.toString() + " BG = " + results.rows.item(i).bglevel);
}
catch(err)
{
alert(err.message);
}
res = res + '(' + results.rows.item(i).time + '|' + results.rows.item(i).bglevel + '),';
alert(res);
}
}
当我运行此时,最终警报只有以下文字:
(undefined,undefined),
(undefined,undefined),
(undefined,undefined),
(undefined,undefined),
非常感谢任何帮助
答案 0 :(得分:-1)
你需要传递行,而不是项目,例如:
alert(“Row =”+ i.toString()+“Time =”+ results.rows [i] .item.time);
答案 1 :(得分:-1)
在index.js中创建一个变量var db; 这个数据库更像是一个全局变量,其值一直存在于应用程序之外。
现在在onDeviceReady()中初始化你的数据库。
var db;
var app={
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
document.addEventListener("pause", function(){ console.log("--- paused ---"); isAppPaused = true;}, false);
},
onDeviceReady: function() {
if(window.sqlitePlugin !== undefined) {
console.log('opening sqlite DB ');
db = window.sqlitePlugin.openDatabase("ECM_MOBILE");
} else {
console.log('opening Web SQL DB ');
db = window.openDatabase("ECM_MOBILE", "1.0", "Cordova Demo", 200000);
}
this.doSomething(db);
},
doSomething:function(db){
}
};
app.initialize();
这是一个执行任何sql语句的例子,这里的数据库是你的db,sql是作为字符串和回调函数传递的sql语句。
read: function(database, sql, callback){
this.callback = callback;
this.sql = sql;
database.transaction(
function(tx){
app.doRead(tx);
},
function(error){
app.onError(error);
}
);
},
onError: function(error){
console.log("error call back : " + JSON.stringify(error));
console.log(error);
},
onResult: function(tx, result){
console.log("result call back : " + result);
this.callback(null, result);
},
doRead: function(tx){
console.log("execute sql : " + this.sql);
tx.executeSql(this.sql , [],
function(tx, result){
app.onResult(tx, result);
},
function(error){
app.onError(error);
}
);
}
希望它有所帮助,您需要相应地集成它以检查解决方案,
也试试JSON.Stringify(result)
;结果返回并console.log()
。
希望它有所帮助。