0

希望你一切安好。

我正在开发一个 android 应用程序,它应该使用 JSON 从服务器端检索数据并将这些数据存储在 android 中的 SQL 中,然后使用 Listview 显示这些数据。

我需要通过添加或删除一些行来更新位于服务器端的数据。

问题就在这里,我怎样才能只将服务器端添加的新行插入到android中的SQL中,以便它可以显示在Listview中?

当从服务器上的数据库中删除一行时,如何从 android 中的 SQL 中删除一行,使其不能显示在 Listview 中?

提前致谢。

4

3 回答 3

0

创建一个 removeItem 和 additem 休息服务。现在在需要时调用服务。

如果要将更改从服务器推送到客户端,可以使用 gcm。

希望你明白我的意思,这是简单易行的方法。

于 2013-11-11T10:47:05.577 回答
0

很少有移动数据库的目标是与服务器端数据库 100% 一致。由于移动设备的性质,您可能无法始终保持与服务器的连接。

考虑到这一点,手动使用 SQL 设置在您的设备上保留一个复制的数据库(即使是很小的)很快就会变成一场噩梦(考虑到超时、延迟、锁定、同步等)。

如果您确实需要一个复制数据库,而不是您根据需要更新的本地数据库,您应该研究促进最终一致性的远程数据库技术- 有几个 API 可用,甚至更多的第三方技术(例如 CouchBase)提供解决方案这个问题。

尝试在这里阅读:http: //developer.android.com/training/cloudsync/index.html

在这里:http: //developer.android.com/training/sync-adapters/index.html

自己处理同步 SQL 数据库可能比单个问题希望回答的要困难得多。

于 2013-11-11T10:51:57.017 回答
0

通常你实现一些DAO来与数据库通信。然后你只需调用一个方法来获取记录。

说,你有车。创建一个模型类Car,然后你的ListView适配器应该等待一个List<Car> cars;要获取此列表,您可以执行类似CarDao.findAll()返回汽车列表的操作。

在这种findAll()方法中,您可以实现您能想到的任何逻辑。例如,从 Web 服务器获取行,将它们写入本地数据库(如果需要),然后从中选择 *。管他呢。只需确保您始终返回最新数据(在我们的案例中为汽车列表)。

更新数据库也是如此。打电话CarDao.delete(id carId);应该可以解决问题。从 sqlite db 中删除行,然后向服务器发送删除请求,然后从本地数据库更新列表视图适配器。

希望我的问题是正确的。

于 2013-11-11T11:12:05.750 回答