我无法使用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";
答案 0 :(得分:1)
在运行您的应用程序至少一次后,您似乎已更改了定义表的Java代码,但尚未更新SQL架构。您需要递增DATABASE_VERSION
以告诉SQLiteOpenHelper有新模式,它不会检查您。
DATABASE_VERSION
是一个传递给SQLiteOpenHelper构造函数的公共变量,它不是通用的,如果你自己不使用这个变量,你只需增加传递给SQLiteOpenHelper constructor的任何值。 :
SQLiteOpenHelper (Context context, String name,
SQLiteDatabase.CursorFactory factory, int version)