使用默认值插入sqlite

时间:2016-03-15 19:34:46

标签: android mysql database sqlite

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插入一个只有默认值的条目?

非常感谢

2 个答案:

答案 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);