Внешний ключ SQLite является нулевым AndroidStudio - PullRequest
0 голосов
/ 11 декабря 2018

Я уже попробовал все, что нашел здесь, в Stackoverflow, но мне ничего не помогло, поэтому я спрашиваю еще раз.Я пытаюсь сделать базу данных с sqlite в Android, но когда я открыл свою базу данных, чтобы увидеть, что моя программа сохранена, у меня по этому внешнему ключу всегда значение 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 Ответ

0 голосов
/ 11 декабря 2018

Похоже, у вас есть две проблемы / недоразумения.

Во-первых, указание внешнего ключа не приводит к автоматическому выбору подходящего значения и обновлению столбца таким значением.Скорее определение внешнего добавляет ограничение, которое говорит, что значение должно быть значением, которое существует в соответствующем столбце родительской таблицы.Если этого не произойдет, возникнет конфликт.

Таким образом, вы должны определить подходящее значение (в вашем случае существующее значение ИДЕНТИФИКАЦИЯ ).

Второе значениечто SQLite, поставляемый с Android, по умолчанию не имеет поддержки внешнего ключа.Поддержка внешнего ключа может быть включена с помощью

, отметив, что поддержка внешнего ключа не может быть включена в транзакции.Поэтому желательно включить поддержку внешних ключей как можно скорее.

  • При использовании в качестве подкласса SQLiteOpenHelper рекомендуется переопределить метод onConfigure и использовать метод setForeignKeyConstraintsEnabled .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...