根据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()调用的结果,那么(我预期)会失败.