2013-05-06 105 views
1

在应用程序的第一次加载时,我从存储中检索数据(Phonegap的WebSQL存储类型)。 Phonegap存储结果加载正常。直到...Phonegap本地存储返回空结果

当我去到另一个网页的应用程序: <a href="page2.html" rel="external">Link</a>

如果我从在Javascript使用window.location.href第二页返回到该主网页,我再次获得的WebSQL数据(相同的功能像之前一样)。

Phonegap Storage调用成功函数(无错误),但用空结果集。它似乎从第二个数据库加载,我没有存储任何内容(见下面的编辑)。

如果我强制退出应用程序并重新打开,存储将再次加载正常,这说明数据库中的结果不会被删除。

我在ondeviceready被触发后加载存储。什么可能是错的?

注意:
1.这不会发生在模拟器上。只发生在真实Android 4.0设备。
2.此应用程序使用jQuery/jQuery Mobile。

function ondeviceready() { 
    db = window.openDatabase("test", "1.0", "test DB", 2000000); 
    // . . . // 
    db.transaction(function(tx) { 
     tx.executeSql('SELECT * FROM table ORDER BY name', [], querysuccess, function(tx, e) { 
     errorAlert(); 
     }); 
    }), errorCB; 
} 

编辑: 我现在,如果我添加一个新的行第一次加载应用程序时,它存储在一个数据库中注意到。然后,如果我转到第二页然后回到第一页,然后再添加另一行,它也会存储,但是在单独的数据库中!(所以这就是它所做的)。很奇怪,我看到这发生了。我的所有行被保存和持久性,但查询将返回不同组取决于我是否到了第二页或没有结果的......

另外: 第二页是有一些jQuery的错误原因。我刚刚创建了一个带有脚本链接到jQuery的空白页面,并且出现错误。奇怪......我不知道这个错误是否影响到数据库?我试图发现如何解决这个错误。

+0

您是否在表中插入任何记录? – 2013-05-07 05:32:12

+0

@VickyGonsalves是的,首先加载我插入记录。但是,在离开并返回第一页后,我没有添加任何新记录。这就是为什么它回到第一页后没有返回结果 - 因为它就像创建第二个数据库一样。请参阅编辑。 – Hope4You 2013-05-07 17:43:51

+0

是在iOS上工作吗? – 2013-05-10 04:22:44

回答

1

我以前遇到类似这个问题,但我的问题是我试图从Java端和Javascript端写入相同的数据库。这就是我如何能够解决这个问题:

  • 首先我跑在Android模拟器的应用程序,并使用DDMS来访问数据库,这是当我意识到两人在不同的数据库进行写作。

  • 我从使用WebSQL更改为使用正确的SQLite数据库,然后我开始获得一致的结果。它是phonegap实现数据库存储的直接替代品,因此不需要更改代码。请参阅https://github.com/brodyspark/PhoneGap-SQLitePlugin-Android

我想这也是必须注意的是WebSQL有一定的存储限制,所以你可能会使用SQLiteWebSQL会更好。请参阅:http://www.steveworkman.com/html5-2/standards/2011/the-limitations-of-websql-and-offline-apps/

希望这有助于:-)

+0

良好的信息和良好的联系。现在,我将坚持使用我的解决方案的WebSQL,但也许我会在未来:)切换 – Hope4You 2013-05-17 17:25:42

+0

我有更多的数据库问题,所以我只是切换到pgsqlite,迄今如此好,谢谢。 – Hope4You 2013-05-22 15:48:24

+0

太棒了。不错的选择,你不能用sqlite出错。我很高兴你有你的问题排序;-) – Sthe 2013-05-23 06:15:28

0

我做了什么我现在通过Ajax加载外部HTML页面:

$.mobile.changePage("page2.html");

我也切换到pgsqlite建议。