当前位置: 首页 > 面试题库 >

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

南门魁
2023-03-14
问题内容

这个问题已经在这里有了答案

同步客户端-服务器数据库 (6个答案)

5年前关闭。

我正在一个包含Web应用程序和移动应用程序的项目,该项目记录每日用户的数据。用户可以删除,更新其数据,并且可以使用许多设备来插入数据。
我打算以这种方式进行开发:
用户输入数据,然后插入SQLite。服务将定期(每5小时或每秒钟)启动,以使用时间戳与MySQL同步。
我确实使用互联网上的服务和时间戳来搜索示例,但没有发现任何问题。如果有示例或教程,那就太好了。
我是Android的新手,我不知道开发这样的应用程序的最佳方法是什么。提前致谢。

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


问题答案:

您可以使用volleyGoogle提供的库,也可以使用其他方法libraries,这取决于您要如何发送数据,最好的方法是JSON使生活更轻松,从想要与后端同步并发送数据的sqlite获取数据在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);
    }


 类似资料:
  • 问题内容: 我正在使用本地数据库(使用html5webstorage)开发一个移动Web应用程序(适用于iPhone和Android),因此当用户离线时我的应用程序仍然可以使用。 这工作正常,但是我想将本地数据保存在服务器上。因此,我需要将本地数据库与服务器上的数据库同步。同步只能是一种方式,但是在将来,我想以两种方式(服务器<->本地数据库)进行同步。 这种要求看起来很普通(或者将来在移动Web

  • 我喜欢新的System.net.Http.HttpClient类。它有一个很好的简单的API,它不会抛出正常的错误。但它只是异步的。 我需要代码(深入服务器内部) 编辑:我让PM女士最近向我确认,有一个命令“任何可能采取>X MS(我忘了X)的API必须是异步的”,许多PMs将此解释为“只有异步”(不清楚这是否是意图)。因此,文档DB api只是异步的。

  • 问题内容: 我需要将数据库从sqlite迁移到mysql,并且各种工具/脚本对我来说太多了,无法轻松找到最安全,最优雅的解决方案。 在我看来,这看起来不错http://djangosnippets.org/snippets/14/,但距获取更新令人担忧,似乎已经过去了三年。 您是否可以推荐一个在Django 1.1.1上可靠的解决方案? 问题答案: 执行: 接下来,将你的settings.py更改

  • 问题内容: 用例是使用Redis作为MySQL的本地缓存 MySQL中的数据格式为:单个主键和其他几个字段。不会有查询数据库的交叉表 Redis键是MySQL中的主键,值是包含MySQL中其他字段的哈希 关闭电源后,少于一分钟的数据丢失是可以接受的。 我的解决方案是: Redis写入AOF文件,某些进程将监视此文件并将更新的数据同步到MySQL Hack Redis可以在多个文件中写入AOF,就像

  • 问题内容: 我试图找出最好的方法,使用android应用程序中的sqlite数据库对两个表进行简单表联接。是使用CursorJoiner的最简单方法还是有更简单的方法? 问题答案: 在SQLiteDatabase和SQLiteQueryBuilder的实现中,您将看到可以将想要联接的表传递给的参数,即使文档暗示它仅采用表的单个名称。SQLiteQueryBuilder的文档更加清晰,甚至提供了类似

  • 问题内容: 我在Windows机器上有一个访问数据库,必须将其导入到Linux Web服务器上的mysql中。目前,访问dabatbase表已导出为文本文件,并通过ftp自动复制,然后加载到mysql中。 有没有更好的方法可以执行此操作,也许使用ODBC连接或其他方法? 限制复制已经存在的信息的最佳方法是什么,即仅传输访问数据库中的记录而mysql中尚未的记录。 访问数据库是由另一个程序处理的,最