SQLite识别长值

时间:2015-08-29 08:29:59

标签: java android sqlite

我正在尝试识别SQLite列数据类型,我不知道如何检查列中的数字是long还是int,还是如果数字是float或{ {1}}。

double

2 个答案:

答案 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;
}
//...