【问题标题】:Sync a database on an Android device to a remote master database将 Android 设备上的数据库同步到远程主数据库
【发布时间】:2012-05-30 02:46:26
【问题描述】:

我在 Android 设备上有一个 SQLite 数据库和一个 MySQL 远程主数据库。 Android 设备用户可以修改数据库(即添加、删除、修改)记录。我想要的是在 Android 设备在线时自动将 Android 设备上的数据库同步到主数据库。同步主数据库上的记录后,应反映所有添加、删除或在某些情况下发生的修改。

好的,这就是我想做的事情。在我创建的 Databasehelper 类中,我将在每个方法中添加代码,以便每次调用方法并在本地 android 数据库中执行相应的查询时,执行的查询字符串将存储在一个简单的文本中文件。因此,本地数据库中可以不断发生更改,查询字符串将继续存储在文件中。它基本上会创建一个 SQL 转储(对吗?)。现在,当我在客户端编写我的 JDBC MySQL 连接代码时,我将让它一次从该文件中读取一行,并在主 MySQL 服务器上执行查询。听起来怎么样?我想它也可以删除。

但是出现了以下疑问:

1) MySql 的 JDBC 连接器可以在 Android 设备上运行吗?我在网上浏览并找到了相互矛盾的答案。有人说这行不通。有人说您只需将外部 jar 文件 mysql-connector-java-3.0.17-ga-bin 添加到项目的构建属性中。对此真的很困惑。对PHP一无所知,所以我希望它能工作。

2) 连接后,我认为我不需要从 MySql 主数据库返回任何结果。我只需要执行存储在主数据库上的文本文件中的 sql 转储。听起来很简单吧?

3) 现在换一种方式同步。我在 Sqlite 上发现的好处是即使它们也接受 SQL 查询。因此,对于另一种同步方式,我需要让 Android 设备下载特定文件夹中的 Sql Dump 文件,然后获取我创建的数据库适配器以从下载的文件中读取并执行查询。这听起来要困难得多。有什么想法吗?一件事是确定 SQLite 数据库不允许连接到远程服务器。

有些疑问可能看起来很糟糕,但我真的需要你们的帮助。如您所见,我是数据库中的菜鸟。

【问题讨论】:

  • 你的问题不清楚,我认为这里的问题是服务器端支持的服务如何。例如,该服务提供了一些用于在主数据库上添加、删除、编辑的 API。然后在 android 上你只需创建一个 Rest 客户端来与这个服务通信。
  • 这是一项体面的工作,如果您没有展示您为达到目的所做的任何工作,您可能不会获得太多帮助。展示一些您迄今为止尝试过的示例,以便其他人可以帮助您解决特定问题

标签: php android mysql database sqlite


【解决方案1】:

您可以尝试的一种方法(在这里大声思考)是:

  • 在您的每个表中包含一个客户端 ID,以跟踪它们位于哪个客户端设备,并将其作为唯一键的一部分(假设您有多个设备支持与服务器同步)
  • 您还应该在每个数据库行中包含客户端同步状态,以便跟踪服务器更新是否成功
  • 您还需要跟踪您的客户行是否在初始传输后更新
  • 您能否在连接时选择所有更新的客户端行到服务器

如果

,所有这一切都会变得更加复杂
  • 您要支持删除
  • 您需要双向复制
  • 您有更严格的性能要求

【讨论】:

  • ^ @AnandPrakash - 请不要在一个问题上多次剪切和粘贴您的回复。相反,将读者引导至评论,例如“请参阅我在 Q 下的评论以获取更新”。它为每个人节省了时间!此外,如果您对问题有更新,请将其编辑到您的问题中,这样新读者就不必从评论对话中拼凑出您的要求。 (理想情况下,删除上面的重复评论)。
  • @halfer- 好吧,我的错,我是这个网站的新手。我只是一个本科生,从事一个可能超出我的项目。但我想试试。是的,我编辑了问题本身并删除了我所有的 cmets。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 2014-07-11
相关资源
最近更新 更多