我正在尝试识别SQLite列数据类型,但我不知道如何检查列中的数字是long
还是int
,还是数字是float
或double
。
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/