【问题标题】:SQLiteException no such table, create statement works for one table but not for anotherSQLiteException 没有这样的表,create 语句适用于一个表,但不适用于另一个
【发布时间】: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


【解决方案1】:

@forpas 评论了我的问题的答案,我不得不重新安装应用程序。

详细解答方法在这里:How to reinstall

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    相关资源
    最近更新 更多