0

我在 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 数据库不允许连接到远程服务器。

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

4

1 回答 1

0

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

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

所有这一切都会变得更加复杂,如果

  • 你想支持删除
  • 你想要双向复制
  • 你有更严格的性能要求
于 2012-05-30T09:56:37.253 回答