【发布时间】:2020-02-01 12:16:17
【问题描述】:
我收到如下所示的错误,并看到了其他问题,但似乎没有一个解决方案可以解决我的问题。
我在 OnCreate 函数中创建了表,我最初包含了外键,但我认为这是问题所在,所以将它们注释掉了。我已经使用相同的格式创建了其他表并且它已经工作了。知道为什么这个表不会像其他表一样创建吗?
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("PRAGMA foreign_keys=ON");
db.execSQL("CREATE TABLE IF NOT EXISTS user (username VARCHAR PRIMARY KEY, password VARCHAR, firstName VARCHAR, surname VARCHAR, email VARCHAR)"); //Create table is not there.
db.execSQL("CREATE TABLE IF NOT EXISTS exercise (exerciseID VARCHAR PRIMARY KEY, exerciseName VARCHAR, muscleGroup VARCHAR, equipmentType VARCHAR)");
db.execSQL("CREATE TABLE IF NOT EXISTS workout (exerciseNameID VARCHAR,userID VARCHAR, date VARCHAR PRIMARY KEY, repRange INTEGER, weightKG INTEGER)");
// db.execSQL("create table " + TABLE_WORKOUT + " (COL_userID VARCHAR, COL_exerciseIDFK VARCHAR,COL_date date,COL_repRange INTEGER,COL_weightKG INTEGER)");
// FOREIGN KEY (COL_exerciseIDFK) REFERENCES " +TABLE_EXERCISE+" (exerciseID), FOREIGN KEY (COL_userID) REFERENCES " +TABLE_USER+ " (username))"
插入方法:
public void addWorkout(String exerciseNameID,String userID, String date, int repRange, int weightKG)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COL_exerciseIDFK, exerciseNameID);
values.put(COL_userID, userID);
values.put(COL_date, date);
values.put(COL_repRange, repRange);
values.put(COL_weightKG, weightKG);
//inserting rows
db.insert(TABLE_WORKOUT, null, values);
db.close();
}
此方法与另一个可以正常工作的方法相同。
非常感谢任何回复。
【问题讨论】:
-
不要发布错误信息的图片,而是将文本粘贴到问题中。
-
卸载应用程序并重新运行,以便重新创建数据库。
-
2 提示,如果您遇到表不存在的问题,请尝试删除数据库文件,这可以通过设备资源管理器完成,因为
onCreate仅在数据库文件不存在时运行。您也可以使用设备资源管理器将数据库文件复制到您的计算机,然后使用sqlitebrowser.org 之类的程序轻松查看表并测试 SQL 命令
标签: android sqlite android-studio android-sqlite