为了账号安全,请及时绑定邮箱和手机立即绑定

SQLite 外键为空 AndroidStudio

SQLite 外键为空 AndroidStudio

胡说叔叔 2022-03-10 15:51:52
我已经尝试了我在 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,默认没有开启外键支持。可以通过使用打开外键支持

注意不能在事务中打开外键支持。因此,建议尽快打开外键支持。

  • 如果用作 SQLiteOpenHelper 的子类,则建议覆盖onConfigure方法并使用setForeignKeyConstraintsEnabled方法。


查看完整回答
反对 回复 2022-03-10
  • 1 回答
  • 0 关注
  • 211 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信