2012-09-07 53 views
2

所以我試圖製作一個名稱,卡路里和蛋白質列的數據庫。下面是create語句:帶有多列的Android SQLite數據庫

public class SQLHelp extends SQLiteOpenHelper{ 
    static final String DATABASE_NAME = "Food.db"; 
    static final String TABLE_FOOD = "food"; 
    static final String NAME_COLUMN = "FoodName"; 
    static final String CALORIE_COLUMN = "Calorie"; 
    static final String PROTEIN_COLUMN = "Protein"; 
    static final String FAT_COLUMN = "Fat"; 
    static final String COLUMN_ID = "id"; 

    public SQLHelp(Context c){ 
     super(c, DATABASE_NAME, null, 1); 
    } 

    public void onCreate(SQLiteDatabase db){ 
     String makeTable = "CREATE TABLE " + TABLE_FOOD + "(" 
       + NAME_COLUMN + " TEXT," + CALORIE_COLUMN + " INTEGER," 
       + PROTEIN_COLUMN + " INTEGER" + ")"; 
     db.execSQL(makeTable);  
    } 

的值添加到下面的方法數據庫:

public void createFood(Food f) { 
    ContentValues values = new ContentValues(); 
    values.put(SQLHelp.CALORIE_COLUMN, f.getCalories()); 
    values.put(SQLHelp.PROTEIN_COLUMN, f.getProtein()); 
    values.put(SQLHelp.NAME_COLUMN, f.getName()); 
    database.insert(SQLHelp.TABLE_FOOD, null, 
      values); 
} 

當嘗試添加,logcat的給我的SQLiteException說,蛋白質欄沒有按」不存在。更奇怪的是,當我用代碼註釋掉蛋白質線時,一切正常。

謝謝!

+0

請張貼代碼爲你的'Food'類,espeically您使用這裏的干將。從logcat發佈堆棧跟蹤,至少直到第一行顯示您寫的東西的方法名稱。 –

回答

3

當您更新版本號時,您的DB助手只會更新數據庫。您正在運行的版本#1 DB不包含那些列。

,如果你改變你的版本2它將反映新添加的列

public SQLHelp(Context c){ 
     super(c, DATABASE_NAME, null, 2); //note the 2 here 
    }