加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在SQLite Android游标中识别列的数据类型

发布时间:2020-12-12 19:08:47 所属栏目:百科 来源:网络整理
导读:有没有办法在 Android中识别游标中列的数据类型.游标对象有许多方法来获取列名,列值. 我想找出列的SQLite数据类型(TEXT,INTEGER)等… 我正在编写一个通用函数来解析游标并执行操作.我只会得到一个sql字符串作为函数的参数. 根据SQLite文档( http://www.sqlit
有没有办法在 Android中识别游标中列的数据类型.游标对象有许多方法来获取列名,列值.

我想找出列的SQLite数据类型(TEXT,INTEGER)等…

我正在编写一个通用函数来解析游标并执行操作.我只会得到一个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()调用的结果,那么(我预期)会失败.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读