你如何从光标中获取类型?

javadocs表明android.database.Cursor有一个getType(int)方法。 但是,当我尝试调用此方法时,Eclipse会给出一个错误,指出不存在任何方法。 是什么赋予了?

您定位的是什么版本的Android? getType()方法仅适用于v3.0及更高版本。

编辑:假设您的目标是Android的v3.0之前的版本,那么发现表中每列的类型可能是“hack”,即查询sqlite_master表以查找CREATE数据。

 SELECT sql FROM sqlite_master 

它非常讨厌但是如果你真的需要找到类型,那么你可以扩展SQLiteCursor并添加你自己的getType(int columnIndex)方法。

当游标首次访问表时,您可以对sqlite_master表执行一次性查询,然后从sql列解析CREATE语句并将’types’存储在int[]

getType(int columnIndex)您只需根据columnindex返回int[]的值。

正如我所说,有点黑客但它会起作用。

因为您可以在(几乎)每个SQLite字段中存储任何类型的数据。 在sqlite_master中查找数据类型并使用pragma命令不是一种安全的方法。 您可以使用如下查询获取字段的类型:

 select Field1, typeof(Field1), Field2, typeof(Field2) from MyTable 

此语句返回字段的值及其类型,这些字段可能/可能不会从记录更改为记录。