Android CREATE\u TASKS\u TABLE String存在一些sytax问题

Android CREATE\u TASKS\u TABLE String存在一些sytax问题,android,database,sqlite,foreign-keys,Android,Database,Sqlite,Foreign Keys,这段代码来自我的DatabaseHelper类 //这是两张桌子 private static final String TABLE_TASKS = "tasks"; private static final String TABLE_TASK_LIST = "task_list"; //这些是表列名称 private static final String KEY_PK = "_id"; private static final String KEY_TITLE = "title"; pri

这段代码来自我的DatabaseHelper类 //这是两张桌子

private static final String TABLE_TASKS = "tasks";
private static final String TABLE_TASK_LIST = "task_list";
//这些是表列名称

private static final String KEY_PK = "_id";
private static final String KEY_TITLE = "title";
private static final String KEY_DETAILS = "details";
private static final String KEY_NOTES = "notes";
private static final String KEY_FK_TASKLIST_ID = "fk_tasklist_id";
//这些是将分配给db.exeSQL的字符串

private static final String CREATE_TASKS_TABLE = "CREATE TABLE "
+ TABLE_TASKS 
+ "(" 
+ KEY_PK
+ " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_TITLE + " TEXT,"
+ KEY_DETAILS + " TEXT," + KEY_NOTES + " TEXT," 
+ " FOREIGN KEY ("+ KEY_FK_TASKLIST_ID + ")" 
+ "REFERENCES " 
+ TABLE_TASK_LIST + "("+ KEY_PK + ")" 
+ ")";
private static final String CREATE_TASK_LIST_TABLE = "CREATE TABLE "
+ TABLE_TASK_LIST + "(" + KEY_PK
+ " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_TITLE + " TEXT" +    ")";
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TASKS_TABLE);// create task table
} catch (Exception e) {
Log.e("onCreate Error", "TASKS_TABLE not created");
}
try {
db.execSQL(CREATE_TASK_LIST_TABLE);// create task list table
} catch (Exception e) {
Log.e("onCreate Error", "TASK_LIST_TABLE not created");
}
}
当我尝试插入数据时,字符串导致了问题,它表示表任务没有名为fk_tasklist_id的列

CREATE TABLE tasks (
    _id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT,
    details TEXT,
    notes TEXT,
    FOREIGN KEY (fk_tasklist_id) REFERENCES task_list(_id)
)
在此表定义中,确实没有名为
fk\u tasklist\u id
的列

要定义此类列,请将其添加到列列表中:

CREATE TABLE tasks (
    _id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT,
    details TEXT,
    notes TEXT,
    fk_tasklist_id INTEGER,
    FOREIGN KEY (fk_tasklist_id) REFERENCES task_list(_id)
)
或者,在此列上放置FK约束:

CREATE TABLE tasks (
    _id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT,
    details TEXT,
    notes TEXT,
    fk_tasklist_id INTEGER REFERENCES task_list(_id)
)

那么,为什么不修改此代码以使用该表中的正确字段名呢?我们帮不了你,因为你没有告诉我们任何关于实际表结构的信息。我以为我已经提供了所有相关信息,CL已经向我说明了问题。不管怎样谢谢Marccl谢谢我会试试你的答案很有帮助谢谢它错过了专栏