我已經嘗試了我在 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
提交
取消