SQLite 外键为空 AndroidStudio

我已经尝试了我在 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的画面

http://img3.mukewang.com/6229ae3600013db207230129.jpg

有人能帮我吗?方法代码:


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;


胡说叔叔
浏览 212回答 1
1回答

慕桂英546537

您似乎有两个问题/误解。首先是指定外键不会自动选择合适的值并使用这样的值更新列。而是定义一个外部添加了一个约束,该约束表明该值必须是存在于父表的相应列中的值。如果没有,就会发生冲突。因此,您必须确定一个合适的值(在您的情况下是现有的IDENTIFICATION值)。二是Android自带的SQLite,默认没有开启外键支持。可以通过使用打开外键支持用于打开支持的foriegn_keys pragma或使用SQliteDatabase方法setForeignKeyConstraintsEnabled注意不能在事务中打开外键支持。因此,建议尽快打开外键支持。如果用作 SQLiteOpenHelper 的子类,则建议覆盖onConfigure方法并使用setForeignKeyConstraintsEnabled方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java