Android Столбец внешнего ключа SQLITE имеет значение NULL - PullRequest
3 голосов
/ 29 мая 2020

Проект содержит 2 таблицы, одна - Duser, которая содержит всю информацию о пользователе, а вторая - тестовая таблица. Я хочу передать идентификатор пользователя, который является первичным ключом в таблице Duser, в качестве внешнего ключа в тестовой таблице. когда я открываю столбец внешнего ключа базы данных, он всегда равен нулю. Я также включил внешний ключ с помощью pragrma. Нужно ли мне передавать внешний ключ вручную, или SQLite сделает это? если вручную то как? Пожалуйста помоги.

 @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("Create Table Duser(id integer primary key autoincrement,email Text, name text,password text, confirm text, number string)");
        sqLiteDatabase.execSQL("Create table test(Iid integer primary key autoincrement, name Text, f_id integer NOT NULL , Foreign key(f_id)   REFERENCES DUSER(id) on update restrict on delete restrict)");
        onConfigure(sqLiteDatabase);
    }

    @Override
    public void onConfigure(SQLiteDatabase db) {
        super.onConfigure(db);
        db.execSQL("PRAGMA foreign_keys=ON;");
    }

  public boolean Insert(String email, String name, String password, String confirm, String number) {


        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();

        contentValues.put("email", email);
        contentValues.put("name", name);
        contentValues.put("password", password);
        contentValues.put("confirm", confirm);
        contentValues.put("number", number);

        long ins = db.insert("Duser", "null", contentValues);
        if (ins == -1)
            return false;
        else return true;
    }

  public boolean addInterest(String name) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("name", name);
        long ins = db.insert("test", null, contentValues);

        if (ins == -1)
            return false;
        else return true;

    }
...