Buenas tardes
我正在使用SQLite开发一个android程序。我正在尝试创建一个带有两个与外键相关的表的数据库,我想使用insert函数自动填充母表的一个条目。但这会产生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 funcion插入一个只有默认值的条目?
非常感谢
答案 0 :(得分:0)
使用ContentValues
,您需要至少输入一个值。要获取默认值,请为列的值设置null:
ContentValues values = new ContentValues();
values.putNull("_id");
long id = db.insert("EVENT",null,values);
答案 1 :(得分:0)
无法插入完全空行,因此insert() method具有参数nullColumnHack
,以允许您指定在这种情况下获取NULL值的列:
ContentValues values = new ContentValues();
long id = db.insert("EVENT", "_id", values);