我正在尝试识别SQLite列数据类型,但我不知道如何检查列中的数字是long还是int,还是数字是floatdouble

Cursor c;
Object val;
int type = c.getType(i);
if(type == Cursor.FIELD_TYPE_BLOB){
    val = c.getBlob(i);
}else if(type == Cursor.FIELD_TYPE_FLOAT){
    val = c.getFloat(i);
}else if(type == Cursor.FIELD_TYPE_INTEGER){
    val = c.getInt(i);
}else if(type == Cursor.FIELD_TYPE_LONG){ //this here is the problem. "Cursor.FIELD_TYPE_LONG" does not exists
    val = c.getLong(i);
} else if(type == Cursor.FIELD_TYPE_NULL){
    val = null;
}else if(type == Cursor.FIELD_TYPE_STRING){
    val = c.getString(i);
}

最佳答案

SQLite没有列数据类型。列中的值可以具有不同的类型。

documentation所示,整数可以8个字节存储,因此,如果您不知道该列中的值实际有多大,则必须使用getLong

浮点数也是8字节值,因此必须使用double

关于java - SQLite识别长值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32284135/

10-14 13:32