我已经尝试了我在 Stackoverflow 中找到的所有内容,但没有任何帮助,这就是我再次询问的原因。我尝试在 android 中使用 sqlite 创建一个数据库,但是当我打开我的数据库以查看我的程序保存的内容时,我通过这个外键始终是 null 值。这是我的代码:@Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table " + TABLE_PERSON +" (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, IDENTIFICATION INTEGER)"); db.execSQL("create table " + TABLE_LOCATION +" (ID INTEGER PRIMARY KEY AUTOINCREMENT, LOCATION TEXT, EMPLOYEE INTEGER , FOREIGN KEY(EMPLOYEE) REFERENCES person_table(IDENTIFICATION))");}sqldatabse的画面有人能帮我吗?方法代码:public boolean addDataToLocation(String Location){ SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(COLL_2, Location); long result = db.insert(TABLE_LOCATION, null, contentValues); if(result == -1) return false; else return true;
1 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
您似乎有两个问题/误解。
首先是指定外键不会自动选择合适的值并使用这样的值更新列。而是定义一个外部添加了一个约束,该约束表明该值必须是存在于父表的相应列中的值。如果没有,就会发生冲突。
因此,您必须确定一个合适的值(在您的情况下是现有的IDENTIFICATION值)。
二是Android自带的SQLite,默认没有开启外键支持。可以通过使用打开外键支持
用于打开支持的foriegn_keys pragma
或使用SQliteDatabase方法setForeignKeyConstraintsEnabled
注意不能在事务中打开外键支持。因此,建议尽快打开外键支持。
如果用作 SQLiteOpenHelper 的子类,则建议覆盖onConfigure方法并使用setForeignKeyConstraintsEnabled方法。
添加回答
举报
0/150
提交
取消