我已经尝试了所有我在Stackoverflow这里找到的东西,但没有帮助我,这就是为什么我问一次。我试图在Android中用SQLite做一个数据库,但当我打开我的数据库,看看我的程序保存了什么,我有这个外键总是空值。这里是我的代码:
@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))");
}
字符串
Screen of 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条答案
按热度按时间gijlo24d1#
您似乎有两个问题/误解。
第一个问题是,定义外键并不会自动选择合适的值并用该值更新列,而是会添加一个约束,要求该值必须是父表中相应列中存在的值,否则将发生冲突。
因此,您必须确定一个合适的值(在您的情况下,是现有的IDENTIFICATION值)。
第二个原因是Android提供的SQLite默认情况下不启用外键支持。
*foriegn_keys杂注打开支持
注意外键支持不能在事务中打开。2因此建议尽快打开外键支持。