插入覆盖默认值为null

时间:2017-06-08 16:00:30

标签: android android-sqlite

创建一个包含TEXT列的表格,默认为NULL

public class DbHelper extends SQLiteOpenHelper {
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE ttt (k TEXT, v TEXT DEFAULT NULL)");
    }
}

插入行,但未指定NULL - 默认列

SQLiteDatabase db = dbHelper.getWritableDatabase();
values.put("k", "1");
db.insertWithOnConflict("ttt", null, values, SQLiteDatabase.CONFLICT_IGNORE);

然后执行SELECT * FROM ttt WHERE v IS NULL(我使用Chrome开发者工具,通过Stetho连接到数据库)。结果是没有,因为刚插入的行中的k突然不是NULL,但期望它应该为NULL。

如果我按手'插入行,执行INSERT OR IGNORE INTO ttt(k) VALUES ('2'),然后重复SELECT * FROM ttt WHERE v IS NULL,我会按预期获得第二列(k = 2)。

有人可以证实这种行为吗?这是Android SDK中的错误吗?

P.S。已尝试添加

values.putNull("v");

但它没有帮助:(

0 个答案:

没有答案