0

INSERT INTOステートメントを使用してSQLiteにデータを直接挿入するのに問題があります。おそらくばかげた間違いですが、見つかりません。

    String sql = ("INSERT INTO task(task_goal) VALUES('ASDA');");
            this.ourDatabase.execSQL(sql); 

エラーは次のとおりです。

   table task has no column named task_goal

タスクの目標という名前の列があるのは明らかですが、なぜこのエラーが発生しているのかわかりませんか?

db.execSQL("CREATE TABLE " + DATABASE_TASK3 + " (" +

            KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            KEY_GOAL + " TEXT NOT NULL);"       
    );

どこ:

public static final String KEY_ROWID = "_id";
public static final String KEY_GOAL = "task_goal";
private static final String DATABASE_TASK3 = "task";
4

1 に答える 1

1

アプリを少なくとも1回実行した後、テーブルを定義するJavaコードを変更したようですが、SQLスキーマは更新されていません。SQLiteOpenHelperに新しいスキーマがあることを通知するには、インクリメントする必要がありDATABASE_VERSIONます。新しいスキーマはチェックされません。


DATABASE_VERSIONはSQLiteOpenHelperコンストラクターに渡される一般的な変数であり、ユニバーサルではありません。この変数を自分で使用しない場合は、SQLiteOpenHelperコンストラクターに渡す値をインクリメントするだけです。

SQLiteOpenHelper (Context context, String name, 
        SQLiteDatabase.CursorFactory factory, int version)
于 2013-03-26T20:09:19.623 に答える