2

我有一个 bookid,我需要在科尔多瓦的 sqlite 交易中传递它,比如

var bookName = db.transaction(函数(tx){
                    return tx.executeSql('SELECT * FROM Iqra_Book WHERE book_id=?',[1],function(tx,res){
                        var 长度 = res.rows.length;
                        console.log("长度:" + len);
                        返回 bkName = res.rows.item(0).book_name;
                    }
                , 函数 (e) {
                    return console.log("错误:" + e.message);
                });
            });

但我将此 booName 视为未定义。谁能帮我吗 ?

4

2 回答 2

2

您需要将变量传递给书籍 ID。离开“返回”,你不能只返回一个值,因为 Web 数据库异步工作

tx.executeSql('SELECT * FROM Iqra_Book WHERE book_id ="'+id+'"',[1],function(tx,res){

另外,换行

return bkName = res.rows[0].book_name;

return bkName = results.rows.item[0].book_name;

并检查它是否有效

于 2012-07-10T10:06:19.320 回答
0

您应该使用该方法的values参数executeSql()

例如。

let id = //the ID of the item you are looking for
tx.execute('SELECT * FROM Iqra_Book WHERE book_id=?',[id])
     .then(queryResult => {
       console.log(queryResult.rows.item(0).book_name)
     }).catch(err => console.error(`ERROR: ${JSON.stringify(err)}`);

笔记

  • item()是一个函数 - 你有这个权利,它不能作为数组访问,如上一个答案所示(我讨厌插件,但就是这样)
  • 上一个示例中传递的值是 just 1,所以我希望你想要的 ID 是 1。
  • queryResult.rows是一个类似列表的对象,我建议通过一个 for 循环,其限制为queryResult.rows.length除非(就像在这种情况下),你肯定知道只有1 个结果。
于 2021-06-22T16:44:08.273 回答