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 上运行的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft SQL Server查询分析器不能与本机连接?

sql SQL Server始终在可用性查询上。

保持数据库连接始终处于活动状态的正确方法

013.子查询和分页子查询(sql实例)

FromSql():从字符串列表构建查询字符串以防止注入

MYSQL基础九--子查询和连接