【问题标题】:how to pass parameters in sqlite transaction in cordova如何在cordova的sqlite事务中传递参数
【发布时间】:2012-07-09 17:39:46
【问题描述】:

我有一个 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 为未定义。 谁能帮帮我?

【问题讨论】:

    标签: javascript cordova


    【解决方案1】:

    您需要将一个变量传递给图书 ID。抛开“返回”,你不能只返回一个值,因为网络数据库是异步工作的

    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;
    

    并检查它是否有效

    【讨论】:

    • 我照你说的做了。但仍然出现问题
    • 我编辑了我的答案,我也建议你阅读Phonegap文档的Storage API Documents。
    【解决方案2】:

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

    例如。

    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() 是一个函数 - 你有这个权利,它不能作为数组访问,如上一个答案所示(我讨厌插件,但就是这样)
    • 上一个例子中传递的值只是1,所以我希望你想要的ID是1。
    • queryResult.rows 是一个类似列表的对象,我建议通过一个限制为 queryResult.rows.length 的 for 循环,除非(就像在这种情况下)你确定只有 1 结果。

    【讨论】:

      猜你喜欢
      • 2021-04-04
      • 2014-04-12
      • 2013-09-17
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      相关资源
      最近更新 更多