gpt4 book ai didi

具有多列的 Android SQLite 数据库

转载 作者:搜寻专家 更新时间:2023-11-01 09:05:20 24 4
gpt4 key购买 nike

所以我正在尝试创建一个包含名称、卡路里和蛋白质列的数据库。这是创建语句:

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 版本数据库。

如果您将版本更改为 2,它将反射(reflect)您新添加的列

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

关于具有多列的 Android SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com