gpt4 book ai didi

javascript - 带有 WHERE 子句的 executeSql 在 Phonegap 中不返回任何结果

转载 作者:行者123 更新时间:2023-11-29 22:08:48 25 4
gpt4 key购买 nike

我正在使用 Phonegap 开发应用程序。我创建了一个名为 location 的表,如下所示:

...
tx.executeSql('CREATE TABLE IF NOT EXISTS LOCATIONS (id unique, name, key, secret)');
...

我插入一行:

...
tx.executeSql('INSERT INTO LOCATIONS (id, name, key, secret) VALUES (?, ?, ?, ?)', [1, "Some Name", "Some Key", "Some Secret"], success, error);
...

当我这样做时:

...
tx.executeSql('SELECT * FROM LOCATIONS', [ ], function(tx, results) {
...
}

我得到 results.rows.length 等于 1 并且 results.rows.item(0) 是:

[ {"id":1,"name":"Some Name","key":"Some Key","secret":"Some Secret"} ]

但是如果我这样做:

...
function findById(id) {
tx.executeSql('SELECT * FROM LOCATIONS WHERE id = ?', [ id ], function(tx, results) {
...
}
}
...
findById(1);

我得到的 results.rows.length 等于 0,而我希望它是 1。

有没有人遇到过类似的问题?

非常感谢!

最佳答案

我知道问题出在哪里了。似乎在插入行时,字段“id”被创建为一个整数(因为传递的值是一个整数)。但是,当我访问 findById 时,我没有发送 1,而是发送了“1”。 “WHERE”子句需要一个整数,但它却找到了一个字符串对象。

当您在准备好的语句 (executeSql) 中发送无效类型时,Phonegap 中使用的 Web-SQL 似乎没有给出错误,而是返回 0 个结果。奇怪的行为,但幸运的是我能够通过解析整数来解决我的问题:

函数 findById(id) { tx.executeSql('SELECT * FROM LOCATIONS WHERE id = ?', [ parseInt(id) ], function(tx, results) { ... }

关于javascript - 带有 WHERE 子句的 executeSql 在 Phonegap 中不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19307862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com