如何与在线 json beucase 同步 离线 sqlite 填充重复条目?



我正在研究一个通知系统,该系统使用 volley 抓取数据并将其保存在离线 db(sqlite) 中并通过列表视图显示,以便用户可以离线查看通知问题是我能够正确获取上次输入的通知。

$query="SELECT * FROM ( SELECT * FROM tnews ORDER BY id DESC LIMIT 3) sub ORDER BY id ASC";

但是当我尝试将其插入脱机数据库时,它会被填充.有没有办法在离线数据库中获得相同的内容,只有 20 或 30 个条目,但是当它重复时会占用更多空间,我不知道每次清除表可以解决我的问题? 插入代码

public void addContact(String id,String date,String time,String news,String valid) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
// values.put(KEY_ID,id ); // Contact Name
values.put(KEY_DATE,date); // Contact Phone
values.put(KEY_TIME,time ); // Contact Phone
values.put(KEY_NEWS,news);
db.insert(TABLE_CONTACTS, null, values);
//values.put(KEY_VALID,valid);
//Log.d("Insering",id);
Log.d("Insering",date);
Log.d("Insering",time);
Log.d("Insering",news);
// Log.d("Insering",valid);

// Inserting Row
db.close(); // Closing database connection
}

两边的 id 名称相同,它们也是主要的。有没有办法解决这个问题?

在将数据插入数据库之前,您必须先检查本地数据库中是否存在数据,如果存在,则需要更新行或需要将行插入数据库,请检查以下内容:

public void addContact(String id,String date,String time,String news,String valid) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
// values.put(KEY_ID,id ); // Contact Name
values.put(KEY_DATE,date); // Contact Phone
values.put(KEY_TIME,time ); // Contact Phone
values.put(KEY_NEWS,news);
if(!isRecordExists(KEY_ID,TABLE_CONTACTS,id)) {
values.put(KEY_ID,id );
db.insert(TABLE_CONTACTS, null, values);
}else{
// if you want to update row then only uncomment below line
// db.update(TABLE_CONTACTS, values, KEY_ID + "=?", new String[]{id});
}
//values.put(KEY_VALID,valid);
//Log.d("Insering",id);
Log.d("Insering",date);
Log.d("Insering",time);
Log.d("Insering",news);
// Log.d("Insering",valid);

// Inserting Row
db.close(); // Closing database connection
}
public boolean isRecordExists(String columnName, String tableName, String id) {
SQLiteDatabase db = this.getWritableDatabase();
if (!db.isOpen()) this.onOpen(db);
Cursor cursor = db.rawQuery("select * from " + tableName + " where " + columnName + "=?",
new String[]{id});
boolean exists = (cursor.getCount() > 0);
cursor.close();
return exists;
}

最新更新