2012-08-24 84 views
24

我需要刪除ORMLite數據庫中的記錄,我可以使用如下如何從ORMLITE中刪除記錄?

@Override 
public void Delete(int id) throws SQLException { 
    this.dao.deleteById(id); 
} 

但是通過ID刪除一條記錄,如果我沒有通過ID,但通過名稱或任何其他領域,以刪除同一表中的記錄 我想是這樣

public void Deletefromcanteen(String name,MealType mealtype) { 
    this.dao.deletebyName(name); 
} 

何種查詢我應該寫使用的QueryBuilder刪除一條記錄,其中name =名稱和mealtype =說(午餐)

我想這樣的事情在我databaseh elper類

public void deletefromcanteen(int id, String mealtype) { 
    try { 
     Dao<CanteenLog, Integer> canteenDao = getCanteen(); 
     DeleteBuilder<CanteenLog, Integer> deleteBuilder = canteenDao 
       .deleteBuilder(); 
     deleteBuilder.where().eq("user_id", id).and().eq("meal", mealtype); 
     canteenDao.delete(deleteBuilder.prepare()); 
    } catch (Exception e) { 
     ... 
    } 
} 

回答

67
deleteBuilder.where().eq("FIELD_NAME", arg); 
deleteBuilder.delete(); 

更新:

例如:

//Get helper 
DatabaseHelper helper = OpenHelperManager.getHelper(App.getContext(), DatabaseHelper.class); 

//get dao 
Dao dao = helper.getDao(YOUR_CLASS.class); 

//delete elements from table in field by arg 
DeleteBuilder<CanteenLog, Integer> deleteBuilder = dao.deleteBuilder(); 
deleteBuilder.where().eq("FIELD_NAME", arg); 
deleteBuilder.delete(); 

祝你好運!

+0

@llya Demidove你能請詳細說明它的實際應該如何 –

+0

是否清楚你?) –

0

要保存構建查詢,您可以執行select來查找ID,然後通過ID執行刪除操作。如果您已經爲此表設置了選擇查詢,那麼這將很簡單。

+0

我沒有選擇查詢這個表再次首先我將不得不建立選擇查詢是不是 –

0

它也可以做這樣的

DatabaseHelper.getInstance().getDao(YourObject.class).delete(yourObjectInstance); 
0

如果您正在使用科特林,你需要做這樣的事情,而不是因爲類型推斷當前未正常工作的流暢語法:

val deleteBuilder = dao.deleteBuilder() 
      val where = deleteBuilder.where().eq("address", address) 
      deleteBuilder.setWhere(where) 
      deleteBuilder.delete()