你如何从光标中获取类型?
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
此语句返回字段的值及其类型,这些字段可能/可能不会从记录更改为记录。