2014-11-03 101 views
4

我正在研究一个包含记录每日用户数据的Web应用程序和移动应用程序的项目。用户可以删除,更新他们的数据,他们可以使用很多设备来插入数据。
我打算开发这种方式:
用户输入他们的数据,然后插入到SQLite。服务将定期启动(每5小时或某些时刻)使用时间戳与MySQL同步。
我确实在互联网上使用服务和时间戳搜索样本,但是我什么也没找到。如果有示例或教程,这将非常棒。
我是Android新手,我不知道开发这种应用的最佳方式是什么。提前致谢。Android - 将SQLite与MySQL同步的最佳方式

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

回答

3

你可以通过谷歌或任何其他libraries使用volley库,这取决于你想如何发送的数据,最好的办法是,你使用JSON,使您的生活更轻松,得到源码,你喜欢到数据通过后端同步,并使用凌空发送过来JsonObjectRequest,例如可按您的要求是这样的

jsonObjectRequest postForm = new JsonObjectRequest(Request.Method.POST, URL, YourJsonData, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
     // here you can get your response. 
     },new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
    // here you can tell there is something went wrong. 
    }); 

ü可以添加一个新值指示值是否已同步或不从本地数据库。例如,假设您有一个名为student的表,并且此表有三列,分别是ID,NAME和上面代码中的同步,当您的响应返回成功时更新该行同步列,其中true | false指示此行是否与您的后端同步或没有。并从数据库中获取数据,你应该这样做。

public String getStudents() { 
     List<Student> students = new ArrayList<Student>(); 
     String query = "SELECT * FROM " + STUDENT+ "where synced=0"; 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(query, null); 
     if (cursor.moveToFirst()) { 
      do { 
       Student st = new Student(); 
       st.setId(cursor.getString(cursor.getColumnIndex(ID))); 
       st.setName(cursor.getString(cursor.getColumnIndex(NAME))); 
       st.setSynced(cursor.getInt(cursor.getColumnIndex(SYNCED))); 
       students.add(st); 
      } while (cursor.moveToNext()); 
     } 
     db.close(); 
     return new Gson().toJson(students); 
    } 
+2

你应该替换st.setName(cursor.getString(1));通过cursor.getString(cursor.getColumnIndex(NAME))其中NAME是Sqlite列的名称。 – 2014-11-03 02:00:43

+0

我应该使用时间戳还是同步?哪一个更好? – Foo 2014-11-03 02:12:09

+0

@JuliatzindelToro正确,谢谢你的提升。 – k0sh 2014-11-03 03:35:35

4

AFAIK的esieast的方法是使用一个lib像http://loopj.com/android-async-http/或凌空lije k0sh说,将数据发送到一个PHP脚本,将管理你的MySQL的数据。 你必须写一个PHP(或Java)脚本在你的服务器接收数据(你应该写一个REST API)

要选择HTTP lib中,你应该看看这里:

What is the most robust HTTP library for android?

你应该真的关心你将如何同步你的数据,因为它可能会耗尽你的电池。 在这里,您将学习如何优化更新:

https://developer.android.com/training/efficient-downloads/index.html

希望它能帮助!