我正在尝试识别SQLite列数据类型,我不知道如何检查列中的数字是long
还是int
,还是如果数字是float
或{ {1}}。
double
答案 0 :(得分:0)
SQLite没有列数据类型;列中的值可以有不同的类型。
正如documentation所示,整数可以存储在8个字节中,因此如果您不知道列中的值实际有多大,则必须使用getLong
。
Floats也是8字节值,因此您必须使用double
。
答案 1 :(得分:0)
Tnx的答案。
SQLite没有列数据类型;列中的值可以有不同的类型。
经过一些测试后发现Cursor.FIELD_TYPE_INTEGER
匹配两者,int和long,Cursor.FIELD_TYPE_FLOAT
匹配float和double。
所以这段代码为我完成了这项工作:
//...
if(type == Cursor.FIELD_TYPE_FLOAT){
float floatVal = c.getFloat(i);
double doubleVal = c.getDouble(i);
if(floatVal == doubleVal) val = floatVal;
else val = doubleVal;
}else if(type == Cursor.FIELD_TYPE_INTEGER){
int intVal = c.getInt(i);
long longVal = c.getLong(i);
if(intVal == longVal) val = intVal;
else val = longVal;
}
//...