有什么方法可以在 Android 中识别游标中列的数据类型。游标对象有多种获取列名、列值的方法。
我想找出列(TEXT、INTEGER)等的 SQLite 数据类型...
我正在编写一个通用函数来解析游标并执行操作。我只会得到一个 sql 字符串作为函数的参数。
最佳答案
根据 SQLite 文档 (http://www.sqlite.org/datatype3.html),SQLite 中的列没有数据类型——这些列中的值有。
Any column in an SQLite version 3 database, except an INTEGER PRIMARY KEY column, may be used to store a value of any storage class.
如果您使用的是 API 级别 11 或更高级别,则游标支持 getType()
(请参阅 http://developer.android.com/reference/android/database/AbstractWindowedCursor.html#getType(int))。
如果您使用的是较早的 API 级别,并且您知道给定游标中的所有结果都来自同一个表,那么您可以执行类似(未测试)的操作:
// Assumes "cursor" is a variable that contains the cursor you're
// interested in.
String tableName = "..."; // The name of the table
SQLiteDatabase db = cursor.getDatabase();
String[] names = cursor.getColumnNames();
for (name : names) {
Cursor typeCursor =
db.rawQuery("select typeof (" + name + ") from " + tableName;
typeCursor.moveToFirst();
Log.v("test", "Type of " + name + " is " + typeCursor.getString(0);
}
但是如果传入的游标是(例如)连接两个或多个表的 db.rawQuery() 调用的结果,那将(我预计)失败。
关于android - 识别 SQLite Android Cursor 中列的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6293063/