Web SQL 连接查询不能始终在 Phonegap Android 上运行
Posted
技术标签:
【中文标题】Web SQL 连接查询不能始终在 Phonegap Android 上运行【英文标题】:Web SQL join query not consistently working on Phonegap Android only 【发布时间】:2014-01-20 01:17:43 【问题描述】:我正在尝试在 Phonegap 应用程序中运行以下 Web SQL 查询:
db.transaction( function(tx)
tx.executeSql('SELECT * FROM EVENT,RESPONSE WHERE EVENT.event_id=RESPONSE.event_id AND EVENT.event_id=291 AND EVENT.persona_id=3', [], function(tx, results)
console.log(results);
window.results = results;
, function(err)
console.log(err);
);
);
在 Chrome、android 浏览器和 ios 中,这可以正常工作,但在某些情况下,在已编译的 PhoneGap Android 应用程序中却不能,返回 0 行。
我通过简化查询和以下工作进行了一些调试:
SELECT * FROM EVENT WHERE event_id=291 AND persona_id=3
SELECT * FROM RESPONSE WHERE event_id=291
似乎是查询的 WHERE / JOIN 部分出现了问题,但我似乎无法确定为什么这只会发生在 Android PhoneGap 内联 Web 视图中,而其他任何地方都没有。
是否有人知道可能导致此问题的 Web 视图中的任何差异,或遇到类似情况?
【问题讨论】:
看看这个帖子***.com/questions/18626666/… 将查询更改为SELECT * FROM EVENT e, RESPONSE r WHERE e.event_id=r.event_id AND e.event_id=291 AND e.persona_id=3
。这仍然在 Chrome 中返回 3 行,但在 PhoneGap 中返回 0。
您在 LOGCAT 中发现任何错误吗?
我没有 Android 开发环境设置(使用 Build 和 Xcode)。我有一个正在运行的 Weinre 实例进行调试,并且没有错误消息通过 executeSQL
它不应该有任何区别,但请尝试使用 ANSI 标准连接语法:“SELECT * FROM EVENT e INNER JOIN RESPONSE r ON e.event_id=r.event_id WHERE e.event_id=291 AND e.persona_id=3"
【参考方案1】:
我以前见过类似的数据截断行为,但与联接无关。你的 webSQL 数据库有多大?检查window.openDatabase()
命令的size
值,它可能对您的数据库来说太小了。
window.openDatabase(name, version, display_name, size);
【讨论】:
以上是关于Web SQL 连接查询不能始终在 Phonegap Android 上运行的主要内容,如果未能解决你的问题,请参考以下文章