【发布时间】:2016-03-15 19:34:45
【问题描述】:
我正在使用 SQLite 开发一个 android 程序。我正在尝试创建一个包含两个由外键关联的表的数据库,并且我想使用插入函数自动填充母表的一个条目。但这会产生一个 SQLite 错误。
这是在母类中插入条目的函数
private long new_event(SQLiteDatabase db)
{
ContentValues values = new ContentValues();
long id = db.insert("EVENT",null,values);
return id;
}
这是在子类中插入条目的函数
public long new_specific_event(SQLiteDatabase db)
{
long id_event = new_event(db);
ContentValues values = new ContentValues();
values.put("id_event", id_event);
values.put("whatsoever", "whatsoever");
long id = db.insert("SPECIFIC_EVENT",null,values);
return id;
}
这是母桌
CREATE TABLE EVENT (id INTEGER PRIMARY KEY AUTOINCREMENT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
这是子表
CREATE TABLE SPECIFIC_EVENT (id INTEGER PRIMARY KEY AUTOINCREMENT, id_event NUMBER,whatsoever TEXT,FOREIGN KEY(id_event) REFERENCES EVENT(id));
这导致以下错误
android.database.sqlite.SQLiteException: near "null": syntax error (code 1): , while compiling: INSERT INTO EVENT(null) VALUES (NULL)
我可以使用this 和 db.execSQL() 函数来做到这一点,但是我无法访问我刚刚创建的条目的 ID。 那么,如何使用 insert 函数插入一个只有默认值的条目呢?
【问题讨论】:
-
为什么要插入一些东西而不给它赋值?
-
默认插入当前时间,所以我实际上是在赋值:
-
不,但你为什么不希望它有一个唯一的 ID?
-
我不明白你的意思。您的意思是合并 EVENT 和 SPECIFIC_EVENT?因为我想创建 SPECIFIC_EVENT1 和 SPECIFIC_EVENT2 并且可能更多具有不同的特征。但这可能不是一个聪明的方法。
标签: android mysql database sqlite