cordova s​​qlite查询行长度> 0但项目抛出异常

时间:2015-10-06 15:20:34

标签: sqlite cordova

我有一个构建并填充数据的简单数据库,我从设备中提取数据库并检查它,这是正确的,但是当我使用cordova插件(https://github.com/litehelpers/Cordova-sqlite-storage)查询数据库时,我在日志中有这个:

  

“{” 行 “:{” 长度 “:15},” 的RowsAffected “:0}”

表示查询已成功找到记录。但是当我使用item函数来获取结果时,它会抛出异常,在设备准备好并生成数据库并填充之后会触发以下代码。

var dataBase = window.sqlitePlugin.openDatabase({name: "database.sqlite"});
            dataBase.transaction(function(db) {
                db.executeSql("select * from Settings;", [], function(db, res) {
                    if(res.rows.length > 0) {
                        try{
                            console.log(JSON.stringify(res));
                            alert("RowsObject"+JSON.stringify(res.rows.item(0)));
                        }
                        catch(e){
                            alert("failed get results from query"+JSON.stringify(e));
                        }
                     }
                }, function(db, e){
                    console.log("error in sql:"+JSON.stringify(e));
                });
            });

3 个答案:

答案 0 :(得分:2)

有同样的问题,回到最新的稳定版本,它再次起作用。

cordova插件删除cordova-sqlite-storage

cordova插件添加cordova-sqlite-storage@0.7.10

答案 1 :(得分:0)

看起来问题可能是您正在使用:

res.row.item(0)

而不是:

res.rows.item(0)

插件here的文档显示了预期的语法res.rows(复数)而不是res.row(单数)。

答案 2 :(得分:0)

我在这里有一个有趣的发现。

如果您使用link,则会收到问题中提到的结果,并且尝试访问"select * from Settings;"会导致错误。

相反,如果您在查询中使用字段名称,例如item,您仍会获得问题中提到的结果,以及您应该能够访问项目。

您可以通过迭代逐个访问项目。

"select field1, field2 from Settings;"

我正在使用 cordova-sqlite-storage 2.2.1