【发布时间】:2011-09-24 13:55:58
【问题描述】:
我正在开发一个安卓应用程序。我想用服务器上的 MySQL 数据库更新本地 SQLite 数据库。我无法弄清楚最合适和最标准化的方式是什么?
【问题讨论】:
标签: android mysql database synchronization
我正在开发一个安卓应用程序。我想用服务器上的 MySQL 数据库更新本地 SQLite 数据库。我无法弄清楚最合适和最标准化的方式是什么?
【问题讨论】:
标签: android mysql database synchronization
创建一个网络服务(REST 可能是最好的)并序列化您的 SQLite/MySQL 数据并将其 PUT/POST/GET 到/从您的网络服务。如果您决定从 MySQL 切换到其他服务器端,这将为您提供一个很好的抽象层。
【讨论】:
您可能需要查看fyrecloud.com/amsler 这是一个演示 Android 应用程序的源代码,该应用程序在 Android 设备上的 MySQL 服务器和 SQLite db 之间实现 MySQL 复制。
阿姆斯勒有两个支柱:
它使用 MySQL 客户端/服务器协议与 MySQL 服务器通信,以便连接到服务器以进行身份验证并在发生复制事件时接收它们。
它使用 Antlr lex and parse 软件来对传入的复制事件进行 lex 和解析,然后将 MySQL 命令转换为等效的 SQLite 命令。
这非常适合单向复制。您可以通过 RESTful 类型的方法间接修改 MySQL 服务器来模拟双向复制,然后在 MySQL 发送新的复制事件时进行观察。
通过 REST 访问服务器非常简单。但是,为了支持序列化而修改现有的 MySQL 安装会带来很多麻烦,无法在此列举。 Amsler 利用了预先存在的复制服务。 REST 还依赖于一些轮询策略,以使本地设备保持最新。同样,这种方法存在许多问题。 Amsler 与服务器保持 TCP/IP 连接,从而启用服务器推送更新通知。
Amsler 最困难的部分是搞清楚词法分析/解析。 MySQL、SQLite 及其各个版本之间的语法有许多细微的差别。差异如此之多,以至于提供收缩包装翻译器是不切实际的,您必须自己修改语法。
尽管如此,好的、坏的或丑陋的,都在这里。看看,也许手套合适。
【讨论】:
这可能会有所帮助:sync databases Mysql SQLite
真正的答案是,没有标准或内置的神奇方法可以将位于服务器上某处的 MySQL 数据库复制到设备上。您将必须实现 web 服务或以某种方式将服务器上的 MySQL db 转换为 android sqlite 实现并将该文件下载到应用程序的数据目录中(我不建议采用这种方法)。
【讨论】:
【讨论】:
没有标准的方法。根据您的需要,您可以例如在 REST 或 SOAP 协议或更多二进制数据交换中使用 Web 服务。
【讨论】: