如何将Android手机上的SQLite数据库与服务器上的MySQL数据库同步?

我正在开发一个Android应用程序。 我想用服务器上的MySQL数据库更新本地的SQLite数据库。 我无法弄清楚什么是最合适和标准化的方式呢?

创build一个Web服务(REST可能是最好的),然后将你的SQLite / MySQL数据和PUT / POST / GET到/从你的web服务序列化。 如果你决定从MySQL切换到其他服务器端,这会给你一个很好的抽象层。

您可能需要查看fyrecloud.com/amsler这是一个演示Android应用程序的源代码,该应用程序在MySQL服务器和Android设备上的SQLite数据库之间实现MySQL复制。

阿姆斯勒依靠两大支柱:

  1. 它使用MySQL客户端/服务器协议与MySQL服务器进行通信,以便连接到服务器进行身份validation,并在发生复制事件时接收。

  2. 它使用Antlr lex和parsing软件来parsing和传入复制事件,然后将MySQL命令翻译成等效的SQLite命令。

这对于单向复制非常有用。 您可以通过RESTfultypes方法间接修改MySQL服务器来模拟双向复制,然后在MySQL发送新的复制事件时观察。

通过REST访问服务器非常简单。 但是,修改现有的MySQL安装以支持序列化在这里列举太多令人头疼的事情。 Amsler利用预先存在的复制服务。 REST也取决于一些轮询策略,以保持本地设备合理的最新。 再次,这种方法的许多问题。 Amsler维护与服务器的TCP / IP连接,使服务器推送通知更新。

阿姆斯勒最困难的部分就是搞清楚了解释/parsing。 MySQL,SQLite之间的语法和它们的各种版本有很多细微的差别。 如此多的差异,提供一个缩小包装转换器是不切实际的,而你必须求助于自己修改语法。

尽pipe如此,好的,坏的,或丑陋的,在这里。 看看,也许手套适合。

这可能会有所帮助: 同步数据库Mysql SQLite

真正的答案是,没有任何标准或build立在魔法的方式来复制某个服务器上某个地方的MySQL数据库到设备。 你将不得不实现一个web服务或以某种方式将服务器上的MySQL数据库转换为android的sqlite实现,并将该文件下载到您的应用程序的数据目录(而不是我build议采取的路线)。

晚会,但http://www.symmetricds.org/是一个很好的解决scheme。;

Java也运行在Android上。

LGPL。

可以处理上万个客户。

没有标准的方法。 根据您的需要,您可以使用REST或SOAP协议中的Web服务或更多的二进制数据交换。