在 Android 中将 Sqlite 数据库与远程服务器同步

Posted

技术标签:

【中文标题】在 Android 中将 Sqlite 数据库与远程服务器同步【英文标题】:Sync Sqlite Database With Remote Server in Android 【发布时间】:2017-12-10 01:13:03 【问题描述】:

我使用sqlite 数据库从远程服务器存储数据AsyncTask.. 我已经使用Retrofit 来获取数据,现在我想将该数据存储到sqlite... 我已经拥有DatabaseHelper.class、模型类和NavigationDrawer,因为我正在AsynckTask 中执行MainActivity .

 private class getDataToSqlite extends AsyncTask<Post, Void, Void>

    @Override
    protected Void doInBackground(Post... params) 
           apiInterface.getContacts().enqueue(new Callback<List<Post>>() 
                @Override
                public void onResponse(Call<List<Post>> call, Response<List<Post>> response) 
                    if (response.isSuccessful())

                        contacts = response.body();

                        for (int i=0; i < contacts.size(); i++)

                            Post post = contacts.get(i);

                            SaveToDatabase task = new SaveToDatabase();

                            task.execute(post);

                            adapter.addPost(post);

                        
                    else 

                    

                

                @Override
                public void onFailure(Call<List<Post>> call, Throwable t) 

                    Toast.makeText(getApplicationContext(), "Error" + t.toString(), Toast.LENGTH_SHORT).show();

                
            );

        return null ;
    


private  class  SaveToDatabase extends AsyncTask<Post, Void , Void> 
    @Override
    protected Void doInBackground(Post... params) 
        Post post = params[0];
        try 
            myDb.addData(post);

         catch (Exception e) 
            Log.d(TAG, e.getMessage());
        
        return null;
    

MainActivity 中的那个班级

我打电话给onCreate的班级

   new getDataToSqlite();

我哪里做错了请告诉我

【问题讨论】:

where i doing wrong先告诉我们是什么问题。 【参考方案1】:

你可以做一些我已经做过的事情:

public boolean SyncCityMasterToDevice() 
        try 
            DatabaseHandler db = new DatabaseHandler(mContext);
            db.dbDelete(TableCityMaster.TABLE);
            List<CityMaster> cityMasterList = ServerRepo.getCities();
            db.dbAddCity(cityMasterList);

            Log.d(TAG, "SyncCityMasterToDevice: ");
            return true;
         catch (IOException e) 
            e.printStackTrace();
            return false;
        
    

ServerRepo.getCities(); 是一个改造电话。

我在异步任务中调用了SyncCityMasterToDevice() 方法

`DatabaseHandler`  is the Database Helper Class.

【讨论】:

请批准答案。

以上是关于在 Android 中将 Sqlite 数据库与远程服务器同步的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中将arraylist或vector插入SQLite数据库?

在 android 中将 SQLite 数据从平板电脑更新到手机

如何在 Android 中将 Arraylist 插入 sqlite?

在android中将arraylist <String>值插入sqlite

在android中将房间数据库导出到csv文件

如何在可扩展的listview android中将孩子添加到特定的父母