我正在尝试开发应用程序,其中我在phpMyAdmin中的服务器上有数据库,我从解析json对象获取数据,当然不同的用户有不同的数据,有些用户共享相同的数据。问题是,当我从服务器获取数据时,它有时会花费太长时间,如果我将它存储在设备上,它将更有效但一些用户共享相同的数据(他们可以删除和添加数据)。所以我的问题是 - 我如何将SQlite与myPHP相结合,以便用户首次登录数据时将从服务器获取数据,然后插入设备数据库,下次用户登录数据时取自设备数据库。如果他将进行更改,它将更新两个数据库
答案 0 :(得分:0)
您必须在服务器和客户端上复制数据库架构。
首次从服务器获取结果。并将其存储在当地的sqilite中。然后,在SharedPreferences
中存储一个标志,以便将来知道您必须从本地数据库中获取结果。
之后,如果在本地数据库中进行了任何更改,您还必须在服务器上更新它。为此,它取决于您的用例,您希望在服务器上更新的速度。
如果您不想立即使用,可以等待并批量拨打多个电话,然后使用Job Scheduler API发布到服务器。
如果您希望服务器上的更改应尽快发生,请关闭新线程并立即发布。
答案 1 :(得分:0)
你可以这样做..
对于不同类型的用户,您应该根据用户名或任何用户ID(用户在请求时发送)发送数据,并将公共数据发送给所有用户。
现在来解决你的主要问题..
在用户首次登录请求时,您将从phpdatabase(从服务器)向用户发送所有相关数据(在用户ID /用户名的基础上)并保存在Android设备中的所有数据。
当用户重新签名时,你将检查android设备数据库是否为空(有数据)。如果android设备数据库不为null,那么您将不会从phpdatabase对用户数据执行新请求。
现在,如果用户有任何改变,就像你说用户删除某些东西或更新某些东西那么你已经从android设备向phpdatabase(服务器)发出删除/添加/更新的新请求。首先,您将在服务器端从设备到服务器(phpdatabase)请求更改,如果该服务/请求返回true,那么您将在本地/设备数据库中更改/更新该数据。