具有多列的Android SQLite数据库

时间:2012-09-07 01:51:29

标签: android database sqlite

所以我试图创建一个名称,卡路里和蛋白质列的数据库。这是create语句:

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,表示Protein列不存在。更奇怪的是,当我用注释掉的蛋白质线运行代码时,一切都运行正常。

谢谢!

1 个答案:

答案 0 :(得分:3)

您的数据库帮助程序仅在更新版本号时更新数据库。您正在运行版本#1 DB,但不包括这些列。

如果您将版本更改为2,则会反映新添加的列

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