将null作为Integer值插入数据库

use*_*184 8 database android

我试图将空值存储到数据库中,但每次我加载值得到0.

我声明这个字段就像"intVal integer"

这是我检索它的方式:

Integer x;

x = cursor.getInt(cursor.getColumnIndexOrThrow(MyDBAdapter.KEY_X));
Run Code Online (Sandbox Code Playgroud)

这可靠吗?还是未定义?

所以在我看来,无法将null保存为未定义的整数值

非常感谢

Gra*_*and 15

getInt()文档:

以int形式返回请求列的值.结果以及当列值为null时,此方法是否抛出异常,列类型不是整数类型,或者整数值超出范围[Integer.MIN_VALUE,Integer.MAX_VALUE]是实现定义的.

所以,这是一个你不应该依赖的实现细节.

但是,您仍然可以获得所需的效果:您只需在读取值之前进行空检查.

int index = cursor.getColumnIndexOrThrow(MyDBAdapter.KEY_X);
Integer x = null;
if (!cursor.isNull(index)
    x = cursor.getInt(index);

// now x is either null or contains a valid value
Run Code Online (Sandbox Code Playgroud)