2016-05-26 72 views
0

這可能是一個愚蠢的問題,每當我從服務器獲取記錄需要刪除表中的舊記錄,並需要將新值插入到該表中,我該怎麼做!到目前爲止我所嘗試的是!如何刪除表中的現有記錄並在sqlite中插入新值?

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

db.execSQL(「delete from」+ TABLE_NAME); –

+1

db.delete(TABLE_NAME,null,null); –

+0

select語句在做什麼?您使用WHERE子句,但是條件是什麼,並且您確定從該查詢獲得結果? –

回答

0

請嘗試這些

public void deleteTypeDetails(){ 
     try{ 
      SQLiteDatabase db=this.getWritableDatabase(); 
      db.delete(Constants.TYPE_TABLE_NAME,"1",null); 
      db.close(); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 

    } 
+0

感謝ganesh需要刪除現有的記錄,並插入新的記錄,只要連接與服務器 –

+0

@MedlinMoni你的問題解決了嗎? –

+0

nooo我需要做的是每當我連接服務器首先需要刪除現有的和插入新的如何做到這一點 –

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(); 
     } 
    } 

另一方面,根據您的闕Stion的,我想你是對一個從服務器接收到的新數據,此方法可以幫助你更新一個記錄:

ContentValues cv = new ContentValues(); 
      cv.put("field_name", value); 

db.update(DashBoardModel.DashBoardTable, cv, 
         where, whereArgs); 

順便說一句,我希望你的表有一個主鍵,你可以使用在哪裏找到確切的記錄。 (即使是刪除或更新)

最後,我建議你使用Android的新ORM,比如DBFlow的Realm,以避免所有這些麻煩。 ;)

相關問題