ORM Sugar的查詢條件遇到的錯誤
2017.03.31一開始下的查詢條件都好好的,拿得到內容
Drink.listAll( getTableClass(), "sorting asc")
直到…我下這樣的查詢出現錯誤
DrinkSugar.find(getTableClass(), “drinkId = ? and sugarId = ?", drinkId, sugarId);
錯誤內容是:
android.database.sqlite.SQLiteException: no such column: drinkId
比對Table看起來沒有錯呀!!!為啥他說沒有這個欄位!
public class DrinkSugar extends SugarRecord {
public long drinkId;
public long sugarId;
public DrinkSugar(){
}
public DrinkSugar(long drinkId, long sugarId){
this.drinkId = drinkId;
this.sugarId = sugarId;
}
}
找原因-直接看DB內容
透過工具看,由ORM Sugar建立table時,於Sql中建立了一張名為『DRINK_SUGAR』的表單而裡面的欄位為ID,DRINK_ID,SUGAR_ID,我大寫的部分前面被Sugar加底線了
依照查到的table,正確的查詢條件是
DrinkSugar.find(getTableClass(), “drink_id = ? and sugar_id = ?", drinkId, sugarId);
想要名稱一致卻不行
這時候我就想,不如果把DrinkSugar改成這樣,兩個者就一致了
public class DrinkSugar extends SugarRecord {
public long drink_id;
public long sugar_id;
public DrinkSugar(){
}
public DrinkSugar(long drinkId, long sugarId){
this.drink_id = drinkId;
this.sugar_id = sugarId;
}
}
結論
想要一致性和可讀性兼顧根本不可能QQ
所以要我選擇維持用drinkId
,只是在查詢時記得在大寫字母前加個底線