how to bulk insert in sqlite in android

前端 未结 5 1093
野趣味
野趣味 2020-12-03 10:09

I am using SQLiteOpenHelper for data insertion. I need to insert 2500 id and 2500 names, So it takes too much time. Please any one help me how to reduce the insertion tim

5条回答
  •  时光说笑
    2020-12-03 10:21

    Thank you @karakuri. i pass the list of city id and city name to add_city function and loop through that list and insert all the data. From this we can insert data to database in a small amount of time.

    database class:

    public void add_cities(ArrayList list) {
            SQLiteDatabase db = this.getWritableDatabase();
            db.beginTransaction();
            try {
                ContentValues values = new ContentValues();
                for (Cities city : list) {
                    values.put(CityId, city.getCityid());
                    values.put(CityName, city.getCityname());
                    db.insert(TABLE_CITY, null, values);
                }
                db.setTransactionSuccessful();
            } finally {
                db.endTransaction();
            }
        }
    

    data class:

    public class Cities {
        public String getCityid() {
            return cityid;
        }
    
        public void setCityid(String cityid) {
            this.cityid = cityid;
        }
    
        public String getCityname() {
            return cityname;
        }
    
        public void setCityname(String cityname) {
            this.cityname = cityname;
        }
    
        @Expose
    
        private String cityid="0";
    
        @Expose
        private String cityname="";
    
        public Cities(){
        }
    
    }
    

    activity class:

     ArrayList mCities;
         protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_splash);
                db = new DatabaseHandler(getApplicationContext());
               executeCircleAndOperatorsList();
    
            }
          void executeCircleAndOperatorsList() {
         db.ClearTables();
                ServiceClient serviceClient = ServiceUtil.getServiceClient();
                JsonParser jsonParser = new JsonParser();
    
               mCitiesCallback = new CancelableCallback(citiescallback);
    
                serviceClient.getCities("getCities_v1", mCitiesCallback);
        }
        Callback citiescallback=new Callback() {
    
                @Override
                public void success(final JsonObject jsonObject, Response response) {
                    Thread t=new Thread(new Runnable() {
                        @Override
                        public void run() {
                            parsecities(jsonObject);
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT).show();
    
                                    Intent intent=new Intent(SplashActivity.this,LoginAcivtiy.class);
                                    startActivity(intent);
                                }
                            });
                        }
                    });
                    t.start();
    
                }
    
                @Override
                public void failure(RetrofitError error) {
    
                }
            };
            public void parsecities(JsonObject result) {
                //Log.v("TAG_RESULT", "" +result.toString());
                try{
                    String Status = result.get("Status").getAsString();
                    if (TextUtils.equals(Status, "true")) {
                        Gson gson = new Gson();
    
                        JsonArray array = result.get("data")
                                .getAsJsonArray();
                        Type type = new TypeToken>() {
                        }.getType();
                        setmCities((ArrayList) gson.fromJson(array, type));
                        long start = System.currentTimeMillis();
                        db.add_cities(mCities);
    
                        System.out.println(System.currentTimeMillis() - start);
                        circle_list=db.get_cities();
                        Log.v("TAG_CIRCLELIST",""+circle_list);
    
    
    
                    }
                    else if (TextUtils.equals("Status", "false")) {
    
                        // showToast(operators.getMessage());
    
                    } else {
                        throw new JSONException("Something went wrong ");
                    }        }catch(Exception e){
                    e.printStackTrace();
    
                }
    
            }
          public void setmCities(ArrayList mCities) {
                this.mCities = mCities;
            }
        }
    

提交回复
热议问题