【发布时间】:2011-09-03 00:06:15
【问题描述】:
javadocs 表明 android.database.Cursor 有一个 getType(int) 方法。但是,当我尝试调用此方法时,Eclipse 给我一个错误,提示不存在方法。什么给了?
【问题讨论】:
-
您确定导入正确吗?
标签: java android sqlite cursor
javadocs 表明 android.database.Cursor 有一个 getType(int) 方法。但是,当我尝试调用此方法时,Eclipse 给我一个错误,提示不存在方法。什么给了?
【问题讨论】:
标签: java android sqlite cursor
您的目标是哪个版本的 Android? getType() 方法仅适用于 v3.0 及更高版本。
编辑:假设您的目标是 Android 的 v3.0 之前的版本,那么发现表中每列的类型的可能“黑客”方法是查询 sqlite_master 表以找到创建数据。
SELECT sql FROM sqlite_master
这很讨厌,但如果你真的需要找到类型,那么你可以扩展 SQLiteCursor 并添加你自己的 getType(int columnIndex) 方法。
您可以在游标首次访问表时对sqlite_master 表执行一次性查询,然后从sql 列解析CREATE 语句并将“类型”存储在int[] 中。
在getType(int columnIndex) 中,您只需根据columnindex 返回int[] 的值。
正如我所说,有点小技巧,但它会起作用。
【讨论】:
因为您可以在(几乎)每个 SQLite 字段中存储任何类型的数据。在 sqlite_master 中查找数据类型并使用 pragma 命令不是一种安全的方法。您可以使用如下查询获取字段的类型:
select Field1, typeof(Field1), Field2, typeof(Field2) from MyTable
此语句返回字段的值及其类型,它们可能/可能不会因记录而异。
【讨论】: