Согласно документации SQLite (http://www.sqlite.org/datatype3.html) столбцы в SQLite не имеют тип данных - значения в этих столбцах имеют.
Любой столбец в базе данных SQLite версии 3,кроме столбца INTEGER PRIMARY KEY, может использоваться для хранения значения любого класса хранения.
Если вы используете 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 (), который объединил две или более таблиц.