执行带有 WHERE 子句的 Sql 在 Phonegap 中不返回任何结果
executeSql with WHERE clause not returning any results in Phonegap
我正在使用Phonegap开发一个应用程序。我创建了一个名为位置的表,如下所示:
...
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) {
...
}
我得到的结果.rows.length等于1,结果.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);
我得到的结果.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( { ... }}
结果是一个对象,而不是一个数组。例如,如果要访问名称值,请results.rows.item(0).name
.其他列也是如此。
相关文章:
- Phonegap-返回按钮重新加载整个页面
- Windows phone 8和phonegap 2.7.0,HTML页面和Xaml之间的导航以及返回
- PhoneGap API返回时间戳格式
- 如何在phonegap javascript函数中返回结果
- Native Phonegap、下载并创建文件、动态命名文件和返回路径
- Phonegap:监听页面并关闭InAppBrowser返回index.html的简单方法
- 为什么iOS上的Phonegap中的新日期不返回任何内容
- 执行带有 WHERE 子句的 Sql 在 Phonegap 中不返回任何结果
- 在 Phonegap DB 函数中返回函数外部的变量
- PhoneGap安卓应用程序需要获取外部SD卡路径,但它只返回内部SD卡路径
- 如何在phonegap android中从js向html页面返回值
- 返回到索引.html从图像.html通过使用PhoneGap Android中的“手机后退”按钮
- phonegap+iOS,http请求在本地文件上总是返回状态0
- 如何等待数据库事务完成它的操作并在phonegap中返回值
- 如何使用jquery在phonegap类上返回延迟对象
- phonegap Ajax调用在android设备中返回error=undefined
- Windows Phone PhoneGap应用返回按钮问题
- xmlhttpRequest状态在phonegap中返回0
- 当光标聚焦在一个字段时,Phonegap返回按钮不工作
- Facebook邀请在phonegap返回OK