2012-09-07 54 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 
    }