我已经尝试了所有在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))");
}
有人可以帮助我吗? 方法代码:
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;
答案 0 :(得分:2)
您似乎有两个问题/误解。
第一个是指定外键不会自动选择合适的值并使用该值更新列。而是定义一个外来变量会添加一个约束,该约束说该值必须是父表的相应列中存在的值。如果没有,则会发生冲突。
因此,您必须确定一个合适的值(在您的情况下为现有的 IDENTIFICATION 值)。
第二个是Android随附的SQLite,默认情况下未启用外键支持。可以通过使用
来打开外键支持请注意,不能在事务中打开外键支持。因此,建议尽快打开外键支持。