使用共享首选项停止在sqlite数据库中重复插入json解析数据。 CatagoryActivity.java:-这里我解析了json数据并调用方法将它添加到sqlite数据库中。
public void get_data(String data) {
try {
JSONArray data_array = new JSONArray(data);
for (int i = 0; i < data_array.length(); i++) {
JSONObject obj = new JSONObject(data_array.get(i).toString());
Message add = new Message();
Log.d("JSONVALUE :", obj.toString());
String category = obj.optString("category");
String status = obj.optString("status");
String imgLink = obj.optString("imagelink");
String id = obj.optString("id");
add.setCategory(category);
add.setStatus(status);
add.setImagelink(imgLink);
add.setId(id);
objlist.add(add);
dataBaseHelper.addSMS(category, status, imgLink);
if(i==data_array.length()-1){
lastId=id;
new SendLastID().execute();
}
}
new ListAdapter(CatagoryActivity.this, objlist)
.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
DatabaseHelper: - 在此文件代码中,在sqlite数据库中插入已解析的数据
public void addSMS(String category,String status,String imageLink) {
SQLiteDatabase db123 = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(MessagesAdapter.CATEGORY, category);
values.put(MessagesAdapter.Status, status);
values.put(MessagesAdapter.Imagelink,imageLink);
db123.insert(MessagesAdapter.TBL_CATEGORY, null, values);
//SharedPreferences sharedPreferences = context.getSharedPreferences("SMS",Context.MODE_PRIVATE);
//SharedPreferences.Editor editor = sharedPreferences.edit();
//editor.putString("IS_ADDED_IN_DB","YES");
//editor.commit();
Log.e("TAG","JSON DATA INSERTED"+values);
//Toast.makeText(mContext, "Data Iserted", Toast.LENGTH_LONG).show();
db123.close();
}
答案 0 :(得分:0)
不使用SharedPreferences
阻止数据库中的重复条目,而是使用SQLiteDatabase.insertWithOnConflict方法和SQLiteDatabase.CONFLICT_IGNORE常量。
示例:强>
db123.insertWithOnConflict(MessagesAdapter.TBL_CATEGORY,
null,
values,
SQLiteDatabase.CONFLICT_IGNORE);
并将primary-key
设置为MessagesAdapter.CATEGORY
列,以避免根据类别在MessagesAdapter.TBL_CATEGORY
表中重复输入。
答案 1 :(得分:0)
试试这个,
在数据库中添加数据之前检查,
SharedPreferences sharedPreferences = context.getSharedPreferences("SMS",Context.MODE_PRIVATE);
if (!(sharedPreferences.getString(Constant.userId, NO).equalsIgnoreCase("YES")){
dataBaseHelper.addSMS(category, status, imgLink);
}