【发布时间】:2019-09-21 11:00:22
【问题描述】:
我有使用 Sqlite 插件的 ionic 移动应用程序。我尝试运行以下查询:
this.db.executeSql('SELECT * FROM foo_table WHERE id IN (?)', [[1, 3]])
.then(data => {
console.log(data.rows.item(0));
console.log(data.rows.item(1));
// Do something here
});
我故意留下显示数据库初始化代码,因为它是不必要的,因为它可以与同一文件中的其他方法一起正常工作。在数据库中,我在 table_foo 中有两个实体,其中包含一些特定的数据,每个实体都有 id。
当我运行上述语句时,它不会返回 id 为 1 和 3 的这两个实体。而是返回undefined。我在 sqlite 控制台中运行完全相同的语句 SELECT * FROM table_a WHERE id IN (1,3); 并且这有效。它正确显示了这两个实体。我的问题是为什么上面的 Sqlite SELECT IN 查询不能正常工作以及我应该如何在 params 中正确添加许多值(值 1 和 3 的数组位于哪里)?我使用它(SELECT IN 查询)错了吗?
当我使用参数运行上述查询时:
-
[1]-> 工作 -
[[1]]-> 工作 -
[[1, 3]]-> 不起作用 -
[1, 3]-> 很明显的错误
【问题讨论】:
-
您需要类似
SELECT ... id IN (?,?)的内容并绑定[1,3]的值。 -
这是一个糟糕的解决方案,因为我可以有一个包含 7 个元素的数组,或者有时它可以包含 20 个元素。考虑到这一点,我无法执行您的建议。
-
这是唯一的解决方案。如果在运行时之前不知道要绑定多少个值,则可以构建一个带有适当数量问号的查询字符串。
标签: sqlite ionic-framework ionic4