限制在Android应用程序中从SQL下载数据

时间:2011-10-12 18:09:54

标签: android mysql

我有一个应用程序通过Web服务从SQL数据库获取“所有”记录。该应用程序旨在更新数据库onOpen中的所有数据。然而,数据库变得越来越大,现在我只希望应用程序更新新记录。

应用的当前状态:

安装和打开应用程序...应用程序从SQL数据库下载1000条记录。应用程序已打开

第二次....应用程序下载1000条记录(数据总刷新次数)应用程序已开启第3次

时间....应用程序下载1000条记录(数据总刷新次数)

我想要的是什么:

安装和打开应用程序...应用程序从SQL数据库下载1000条记录并记录更新的日期/时间。

每次..... app下载后,只会记录更新或自上次更新后更新的记录。然后,应用程序会在下次更新时记录日期/时间以供参考。

应用程序还有一个菜单项,可根据用户请求进行完整刷新。

我假设我需要在我的sql表中添加一个字段。我应该使用什么数据类型?是否有[最后更新]自动数据/时间数据类型?

有更好的方法吗?

请帮忙,我一直在撞墙试图解决这个问题。

更新:由于我没有看到任何快速修复,如果我只是在数据库中添加日期字段并手动添加日期呢?然后使用2个单独的PHP函数(1)获取所有(2)获取新的?如果我手动编辑数据库中的记录,我还需要手动更新日期戳字段。好像会有更简单的方法吗?有人有更好的解决方案吗?

*更新#2 ***

如果我只是更改我的应用程序以通过JSON解析数据怎么办?这会将应用更新时间从20分钟减少到20秒吗?

最终更新 对于任何可能遇到此问题的人。这是我修复它的方法。我向mySQL数据库添加了一个新字段,其数据类型为TIMESTAMP。我的应用程序记录了更新时间(GMT)所以在我的PHP文件中,我使用的函数可以获取比上一个udate更新的所有记录。它很棒。

2 个答案:

答案 0 :(得分:0)

Sqlite不会跟踪记录的插入顺序,因此无法获得“最新和最新”,除非:
1)您的数据库记录包含自动增量类型的字段
2)您的数据库包含插入时间。

在第一种情况下,假设_id是自动增量索引,并且您检索的最后一条记录为_id = 1000,则您的查询应该是这样的:

SELECT * FROM YOUR_TABLE WHERE ... AND _id > 1000;

答案 1 :(得分:0)

我认为您在UPDATE部分中建议的解决方案是最佳解决方案。通过以下查询从您的应用中获取最新日期:

SELECT MAX(timestamp) FROM table;

然后在您的请求网址中使用该值。您必须编写PHP函数,该函数返回具有较新时间戳的所有记录。