Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-将SQLite与MySQL同步的最佳方式_Android_Mysql_Sqlite_Sync - Fatal编程技术网

Android-将SQLite与MySQL同步的最佳方式

Android-将SQLite与MySQL同步的最佳方式,android,mysql,sqlite,sync,Android,Mysql,Sqlite,Sync,我正在做一个包含web应用程序和移动应用程序的项目,其中记录了每天用户的数据。用户可以删除、更新数据,并且可以使用许多设备插入数据。 我打算这样发展: 用户输入他们的数据,然后插入SQLite。服务将定期启动(每5小时或其他时间),使用时间戳与MySQL同步 我确实使用服务和时间戳在互联网上搜索了一个样本,但什么也没找到。这将是伟大的,如果有一个样本或教程。 我是Android新手,我不知道开发这样的应用程序的最佳方式是什么。提前谢谢 ----编辑-- 我考虑使用时间戳或同步。哪个更有效?你可以

我正在做一个包含web应用程序和移动应用程序的项目,其中记录了每天用户的数据。用户可以删除、更新数据,并且可以使用许多设备插入数据。
我打算这样发展:
用户输入他们的数据,然后插入SQLite。服务将定期启动(每5小时或其他时间),使用时间戳与MySQL同步
我确实使用服务和时间戳在互联网上搜索了一个样本,但什么也没找到。这将是伟大的,如果有一个样本或教程。
我是Android新手,我不知道开发这样的应用程序的最佳方式是什么。提前谢谢

----编辑--

我考虑使用时间戳或同步。哪个更有效?

你可以使用谷歌的
volley
库或任何替代的
库,这取决于你想如何发送数据,最好的方法是使用
JSON
让你的生活更轻松,从sqlite获取要与后端同步的数据,并使用volley通过
JsonObjectRequest
发送,例如,您的请求可以如下所示

jsonObjectRequest postForm=newjsonobjectrequest(Request.Method.POST,URL,YourJsonData,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
//在这里你可以得到你的回应。
}
}, 
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//在这里你可以看出出了什么问题。
}
});
您可以添加一个新值,指示该值是否已从本地数据库同步。例如,假设您有一个名为student的表,该表有三列ID,当您的响应返回成功时,在上面的代码中命名并同步。使用true | false更新行同步列,这表示此行是否与后端同步。要从数据库中获取数据,您应该执行以下操作

公共字符串getStudents(){
List students=new ArrayList();
String query=“从同步为0的学生中选择*”;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(查询,空);
if(cursor.moveToFirst()){
做{
学生st=新学生();
st.setId(cursor.getString(cursor.getColumnIndex(ID));
st.setName(cursor.getString(cursor.getColumnIndex(NAME));
st.setSynced(cursor.getInt(cursor.getColumnIndex(SYNCED));
学生。添加(st);
}while(cursor.moveToNext());
}
db.close();
返回新的Gson().toJson(学生);
}

AFAIK最简单的方法是使用lije k0sh所说的lib或volley将数据发送到将管理mysql数据的PHP脚本。 您必须在服务器中编写一个php(或java)脚本来接收数据(您应该编写一个RESTAPI)

要选择HTTP库,请查看以下内容:

您应该真正关心如何同步数据,因为这可能会耗尽您的电池电量。 在此,您将了解如何优化更新:


希望有帮助

您应该替换st.setName(cursor.getString(1));通过cursor.getString(cursor.getColumnIndex(NAME)),其中NAME是Sqlite列的名称。@JuliatzindelToro更正,感谢headsup.hey@k0sh感谢您的回答,我的问题是,如果我有5个表,那么需要从中创建json,并使用volley将其作为JsonObjectRequest发送到服务器,然后相应地从服务器获取数据,这会导致低绩效吗?请务必回复。