【问题标题】:Android API < 10 replacement for getType methodAndroid API < 10 替代 getType 方法
【发布时间】:2014-12-01 21:20:03
【问题描述】:

我正在努力为我正在构建的 API “完全”动态地获取 SQLite 数据库的选择方法。此时的一个也是最后一个问题是我无法分辨从查询返回的项目的类型。 我尝试了其他主题中建议的一些方法,但它们似乎都不适合我。

它现在的使用方式是:一切都是字符串。我知道这适用于 int 和 Strings,但我不确定其他格式,当然这不是它应该的方式。 此外,此代码目前仅适用于一条记录,但这不是问题。

public HashMap<String, String> select(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
    columns = cursor.getColumnNames(); //Used when columns[] are null - SELECT * FROM ...
    HashMap<String, String> resultTable = new HashMap<String, String>();
    if (cursor.getCount() > 0) {
        cursor.moveToFirst();

        for (int i = 0; i < cursor.getColumnCount(); i++) {
            resultTable.put(columns[i], cursor.getString(i));
        }
    }

    cursor.close();
    db.close();
    return resultTable;
}

我正在使用 android api 版本 10,所以 getType 不可用

【问题讨论】:

    标签: android sqlite select dynamic gettype


    【解决方案1】:

    首先检查该列数据的数据类型..借助..

    cursor.getType(columnIndex)
    

    用...检查返回的值

    cursor.FIELD_TYPE_FLOAT  // or cursor.FIELD_XXXXXXX
    

    然后分别使用getXXXX()方法..

    【讨论】:

    • 我不能使用这种方法,因为我正在使用上面提到的 API 级别 10。
    【解决方案2】:

    试试这个

    sstatic int getType(Cursor cursor, int i) 抛出异常 { SQLiteCursor sqLiteCursor = (SQLiteCursor) 游标; CursorWindow cursorWindow = sqLiteCursor.getWindow(); int pos = cursor.getPosition();整数类型 = -1; if (cursorWindow.isNull(pos, i)) { 类型 = FIELD_TYPE_NULL; } else if (cursorWindow.isLong(pos, i)) { 类型 = FIELD_TYPE_INTEGER; } 否则 if (cursorWindow.isFloat(pos, i)) { 类型 = FIELD_TYPE_FLOAT; } 否则 if (cursorWindow.isString(pos, i)) { 类型 = FIELD_TYPE_STRING; } 否则 if (cursorWindow.isBlob(pos, i)) { 类型 = FIELD_TYPE_BLOB; } 返回类型; }

    【讨论】:

    • 转换失败,java.lang.ClassCastException: net.sqlcipher.CrossProcessCursorWrapper
    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 2019-08-11
    • 2021-02-13
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多