首页 > 代码库 > 安卓数据云端同步(一)生成操作Sqlite记录
安卓数据云端同步(一)生成操作Sqlite记录
同步思想:
先介绍客户端为最新数据的数据同步问题,这种机制常常应用在云笔记,随手记类似的app。
这里我建了一个listview,对listview上item的增删改,来代替实际项目中的情况。
1.对listview 和本地数据表datatable表(使用id作为数据唯一表示)映射,实现增删改。
2.每次将对本地数据表的操作记录在operation表中,在表中记录该操作的时间戳。
3.将operation 表中内容封装成json数据发送给服务器(从服务器获取上次同步时间戳,只提交在这次更新以后的操作)。
4.服务器更新完成,返回success,表示同步成功,在时候可以清空operation表
MainActivity.java
package com.example.sqllitcache; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.app.AlertDialog; import android.content.ContentValues; import android.content.DialogInterface; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends Activity { ListView lv; Button submit; EditText et; SQLiteDatabase dbwrite ; Dbhelper dbhelper; ArrayAdapter <String> adapter; ImageButton upload; Cursor c; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv=(ListView) findViewById(R.id.listView1); submit=(Button) findViewById(R.id.button1); upload=(ImageButton) findViewById(R.id.imageButton1); et=(EditText) findViewById(R.id.autoCompleteTextView1); adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); lv.setAdapter(adapter); dbhelper=new Dbhelper(this); dbwrite=dbhelper.getWritableDatabase(); getData(); //点击提交 submit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String newData=http://www.mamicode.com/et.getText().toString();>
Dbhelper.java
package com.example.sqllitcache; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class Dbhelper extends SQLiteOpenHelper { public Dbhelper(Context context ) { super(context, "mydb",null, 1); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("CREATE TABLE datatable ("+ "_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "data String DEFAULT \"\")" ); //创建一个操作表作为日志,dataid为数据项id,opt=0,1,2,3为对数据的增删改查 db.execSQL("CREATE TABLE operation ("+ "_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "dataid INTEGER ,"+ "op INTEGER,"+ "data String DEFAULT \"\","+ "timestamp String"+")"); } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub } }安卓数据云端同步(一)生成操作Sqlite记录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。