Android:SQLite在插入行时没有这样的表

时间:2012-06-02 14:41:40

标签: android sql database

我正在尝试在首次创建数据库时将行插入数据库。

@Override
    public void onCreate(SQLiteDatabase db) {
        // Only uses this method when the database is first created.
        //Sets up the database - telling it the table name and all
        //the column names.
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
                KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                KEY_REPS + " TEXT NOT NULL, " +
                KEY_ABS + " TEXT NOT NULL);"    
        );

        db.execSQL("INSERT INTO DATABASE_TABLE(KEY_REPS, KEY_ABS) VALUES ('25', 'Reverse Crunches' );" );
        db.execSQL("INSERT INTO DATABASE_TABLE(KEY_REPS, KEY_ABS) VALUES ('25', 'Crunches' );" );
        db.execSQL("INSERT INTO DATABASE_TABLE(KEY_REPS, KEY_ABS) VALUES ('1 minutes', 'Plank' );" );
        db.execSQL("INSERT INTO DATABASE_TABLE(KEY_REPS, KEY_ABS) VALUES ('30', 'Toe Touches' );" );
        db.execSQL("INSERT INTO DATABASE_TABLE(KEY_REPS, KEY_ABS) VALUES ('50', 'Russian Twists' );" );

    }

如果我没有插入调用,那么数据库就可以正常创建,我可以添加它,查看它等等。但是,出于某种原因,当我尝试将调用数据插入到create时,我得到了一个错误“没有这样的表”。

我尝试将插入调用放入一个名为Populate的单独方法中,并在我的主活动中调用它,但这也会产生错误。

不确定我做错了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

不使用命名表的字符串(由DATABASE_TABLE字符串变量表示)而是直接使用字符串"DATABASE_TABLE"(这对于数据库没有任何意义,因为您没有表{ {1}})。像这样更新插入调用:

DATABASE_TABLE

和其他插入调用一样(看你如何声明创建sql String)。 进行此修改后,请卸载您的应用并重新安装,以便db.execSQL("INSERT INTO " + DATABASE_TABLE + "(" + KEY_REPS +", " + KEY_ABS + ") VALUES ('25', 'Reverse Crunches' );" ); 看到更改。