0

データベースを最初に作成するときに、データベースに行を挿入しようとしています。

@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' );" );

    }

そこに挿入呼び出しがない場合、データベースは正常に作成され、データベースに追加したり、表示したりできます。ただし、何らかの理由で、作成時にデータを挿入する呼び出しを入れようとすると、エラー「いいえそんなテーブル」。

挿入呼び出しを Populate という別のメソッドに入れて、それをメイン アクティビティで呼び出してみましたが、これもエラーが発生します。

私が間違っているのかわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

1

DATABASE_TABLEテーブルに名前を付ける文字列( String変数で表される)を使用する代わりに、文字列"DATABASE_TABLE"を直接使用します(テーブルがないため、データベースには何の意味もありませんDATABASE_TABLE)。次のように挿入呼び出しを更新します。

db.execSQL("INSERT INTO " + DATABASE_TABLE + "(" + KEY_REPS +", " + KEY_ABS + ") VALUES ('25', 'Reverse Crunches' );" );

他の挿入呼び出しについても同じです(作成SQL文字列をどのように宣言したかを見てください)。この変更を行った後、アプリをアンインストールしてから再インストールし、変更が に反映されるようにしますSQLiteOpenHelper

于 2012-06-02T14:45:17.990 に答える