这可能是一个愚蠢的问题,每当我从服务器获取记录需要删除表的旧记录并需要将新值插入该表时我该怎么做呢!到目前为止我所尝试的是什么!
public void DashInsertorUpdate(DashBoardModel dashobjj){
String query=" SELECT * FROM " + DashBoardModel.DashBoardTable + " WHERE " + DashBoardModel.DashBoardLable +"";
Cursor c = db.rawQuery(query, null);
if (c.moveToFirst()) {
DeleteDashboard(dashobjj);
} else {
InsertDashBoardLeadBySource(dashobjj);
}
}
public void DeleteDashboard(DashBoardModel modelobj){
db.execSQL(" DELETE FROM " + DashBoardModel.DashBoardTable + " WHERE " + DashBoardModel.DashBoardLable + "= '" + modelobj.getLabel() + "'");
}
但它不删除现有记录我怎么能这样做可以帮助我!
答案 0 :(得分:0)
请尝试这些
public void deleteTypeDetails(){
try{
SQLiteDatabase db=this.getWritableDatabase();
db.delete(Constants.TYPE_TABLE_NAME,"1",null);
db.close();
}catch (Exception e){
e.printStackTrace();
}
}
答案 1 :(得分:0)
如果必须删除并替换表格的所有记录,我建议这样:
db.delete(TABLE_NAME, null, null);
您也可以使用此代码删除一条特定记录,该记录可以使用它的ID找到该记录:
private void deleteDashboard(int id) {
SQLiteDatabase db = this.getWritableDatabase();
String where = "id = ?";
String[] whereArgs = new String[]{id + ""};
try {
db.delete(DashBoardModel.DashBoardTable, where, whereArgs);
} catch (Exception e) {
e.printStackTrace();
}
}
另一方面,根据您的问题,我认为您将使用从服务器收到的新数据逐个更新记录,这样可以帮助您:
ContentValues cv = new ContentValues();
cv.put("field_name", value);
db.update(DashBoardModel.DashBoardTable, cv,
where, whereArgs);
顺便说一句,我希望你的表有一个主键,你可以使用where子句来查找确切的记录。 (即使是删除或更新)
最后,我建议您使用适用于Android的新ORM,例如Realm,DBFlow,以避免所有这些麻烦。 ;)