将Android设备上的数据库同步到远程主数据库

时间:2012-05-30 02:46:26

标签: php android mysql database sqlite

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

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

但是出现了以下疑虑:

1)JDBC Connector for MySql是否适用于Android设备?我在网上浏览过并找到了相互矛盾的答案。有人说它不起作用。有人说你只需要将外部jar文件mysql-connector-java-3.0.17-ga-bin添加到项目的构建属性中。对此真的很困惑。不知道PHP,所以我希望这有效。

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

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

有些疑惑似乎很差,但我真的需要你的帮助。正如你所看到的,我是数据库中的菜鸟。

1 个答案:

答案 0 :(得分:0)

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

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

如果

,所有这些都会让更复杂
  • 您想支持删除
  • 您想要双向复制
  • 你的性能要求越来越高