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

您似乎在至少运行一次应用程序后更改了定义表的 Java 代码,但尚未更新 SQL 模式。您需要递增DATABASE_VERSION以告诉 SQLiteOpenHelper 有一个新模式,它不会为您检查。


DATABASE_VERSION是一个传递给 SQLiteOpenHelper 构造函数的公共变量,它不是通用的,如果你自己不使用这个变量,你只需要增加你传递给SQLiteOpenHelper 构造函数的任何值:

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