javadocs表明android.database.Cursor有一个getType(int)方法。但是,当我尝试调用此方法时,Eclipse会给出一个错误,指出不存在任何方法。是什么给了什么?
答案 0 :(得分:6)
您定位的是哪个Android版本? getType()
方法仅适用于v3.0及更高版本。
编辑:假设您的目标是Android的v3.0之前的版本,那么发现表中每列的类型可能是“hack”,即查询sqlite_master表以查找创建数据。
SELECT sql FROM sqlite_master
这非常讨厌但是如果你真的需要找到类型,那么你可以扩展SQLiteCursor并添加你自己的getType(int columnIndex)
方法。
当光标首次访问表时,您可以对sqlite_master
表执行一次性查询,然后解析CREATE
列中的sql
语句并将'types'存储在int[]
。
在getType(int columnIndex)
中,您只需根据int[]
返回columnindex
的值。
正如我所说,有点黑客但它会起作用。
答案 1 :(得分:3)
因为您可以在(几乎)每个SQLite字段中存储任何类型的数据。在sqlite_master中查找数据类型并使用pragma命令不是一种安全的方法。您可以使用如下查询获取字段类型:
select Field1, typeof(Field1), Field2, typeof(Field2) from MyTable
此语句返回字段的值及其类型,这些字段可能/可能不会从记录更改为记录。