如何在cordova中传递sqlite事务中的参数

how to pass parameters in sqlite transaction in cordova

本文关键字:sqlite 事务 参数 cordova      更新时间:2023-09-26

我有一个bookid,我需要在cordova中的sqlite事务中传递它像

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

但我得到这个booName是未定义的。有人能帮我吗?

您需要将一个变量传递给图书id。去掉"return",您不能只返回一个值,因为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;

并检查它是否工作

您应该使用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结果