在PhoneGap中访问WebSQL数据库对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PhoneGap中访问WebSQL数据库对象相关的知识,希望对你有一定的参考价值。
我试图使用PhoneGap Developer App访问WebSQL数据库结果,但我似乎无法正确访问该对象。这是一段代码示例:
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM ' + table, [],
function (transaction, resultSet) {
console.log(resultSet.rows);
}, function (transaction, error) {
console.log(error);
});
});
通过PhoneGap CLI测试PhoneGap应用程序时,此块在Chrome中运行良好。它返回控制台中的对象,CLI表示[object SQLResultSetRowList]。然后,我可以通过调用以下方式访问特定行:
console.log(resultSet.rows.item(0));
这在桌面CLI和开发人员应用程序中都可以正常工作。我想做的是使用jQuery $ .each迭代结果:
$.each(resultSet.rows, function (k,v) {
console.log(JSON.stringify(v));
});
这是我遇到问题的地方。在桌面Chrome中并使用CLI,每行都作为key => value对的JSON字符串正确打印到控制台。但是当我尝试在我的测试设备上使用PhoneGap开发者应用程序运行完全相同的代码时,控制台只打印以下内容:“100”,即结果集的“长度”键,以及空输出(相应的关键是“项目”)。
迭代resultSet对象的正确方法是什么?作为参考,我在ios 11上使用iPhone X作为我的测试设备。
我最后通过使用resultSet数据从头开始构建对象来解决这个问题:
function getIterableObjectFromResult(resultSet) {
for (var i = 0, data = {}; i < resultSet.rows.length; i++) {
data[i] = resultSet.rows.item(i);
}
return data;
}
然后可以在PhoneGap Developer应用程序中正确迭代生成的输出。
以上是关于在PhoneGap中访问WebSQL数据库对象的主要内容,如果未能解决你的问题,请参考以下文章
为啥 WebSQL 不适用于使用 PhoneGap 制作的 iOS 应用程序?
从 iPhone 原生应用程序访问 PhoneGap 数据库
Web SQL 连接查询不能始终在 Phonegap Android 上运行
在 HTML5 iOS 应用程序中安全地存储数据 - localStorage / WebSQL / IndexedDB 合适吗?