我有一個table tableGrupo(Groups),它具有來自其他表tableMaquinas(Machines)的外鍵。當我在表tableGrupo(Groups)中插入數據時,Android Studio告訴我外鍵字段不能爲空,因爲它是外鍵。如何在Android中的SQLite中插入foreignKey值?
爲了讓插入接受並將正確的外鍵ID傳遞給我應該賦予什麼值?
這是我的代碼:
//Table1
db.execSQL("CREATE TABLE "+ tableGrupo +" ("+
idGrupo +" INTEGER PRIMARY KEY AUTOINCREMENT, "+
nomeGrupo +" TEXT)");
//Table2
db.execSQL("CREATE TABLE "+ tableMaquinas +" ("+
idMaquina +" INTEGER PRIMARY KEY AUTOINCREMENT, "
+ nomeMaquina + " text not null, "
+ imagemMaquina + " BLOB, "
+ id_grupo + " integer, "
+ " FOREIGN KEY ("+id_grupo+") REFERENCES "+tableGrupo+"("+idGrupo+"))");
**This is the code where I make the insertion in the database**
public void addMachine(String name, byte[] image) throws SQLiteException {
ContentValues values = new ContentValues();
values.put(nomeMaquina,name);
values.put(imagemMaquina,image);
//here i have to put a value for the foreignkey
this.getWritableDatabase().insert(tableMaquinas,null,values);
}
與關係數據庫中的想法是,它可以訪問該數據,其中第外鍵所指向。所以FOREIGN KEY指向的ID應該已經存在。如果它不是這樣的數據庫沒有意義。如果存在,您的密鑰不爲空。所以,也許有一點誤會......你必須有一個有效的外鍵... – Opiatefuchs
但是,當我添加一些東西時,外鍵的值是空的,android studio會一直在竊聽我! – jose
你永遠不會將值賦給id_grupo,因此,sqlite無法將你的Maquina關聯到Grupo(順便說一句,強烈建議在所有表中標準化變量命名 - id_grupo或idGrupo)。 Android Studio不是代理,它只是一個在物理或虛擬設備上運行的IDE(模擬器不是Android工作室本身),而是一個IDE(ambiente interacttivo de desenvolvimento)代碼,適用於Android studio ,即使您可能正在使用AVD/Android監視器窗口看到它,也是發生錯誤的位置。 –