0

我有一个大约有 100 个表的数据库。在所有表中,所有字段都有不同的数据类型,如 int、string 等。现在要求是。

当我对任何表使用 Select 查询时,它应该将特定表的所有字段作为字符串类型提供给我。如果选择查询可以将所有字段作为字符串提供,那么我不需要cursor.getInt()int数据类型编写。我只需要在任何地方使用cursor.getString().

请告诉我这样一个选择查询,它将所有字段都作为字符串类型返回。

4

2 回答 2

2

嗨@Nil,您需要在查询中将 int 转换为字符串,例如:“select cast(some_integer_column as text) from some_table”

于 2013-10-05T04:33:54.333 回答
0

请检查下面的代码片段。getTableContents返回一个ArrayList包含另一个ArrayListString数据的。内部列表是表格中每个元组/行的内容String格式。该getAsString方法包含检查数据类型并String在必要时转换为的实际方法。

public ArrayList<ArrayList<String>> getTableContents(String inStrQuery, String[] selectionArgs){
    ArrayList<ArrayList<String>> rows = new ArrayList<ArrayList<String>>();

    //Check database and open if required
    if(null == database){
        open();
    }

    Cursor cursor = database.rawQuery(inStrQuery, selectionArgs);
    try {
        cursor.moveToFirst();
        while(!cursor.isAfterLast()){
            ArrayList<String> row = new ArrayList<String>();
            int columnCount = cursor.getColumnCount();
            for(int c=0; c< columnCount; c++){
                row.add(getAsString(cursor, c));
            }
            rows.add(row);
            cursor.moveToNext();                
        }
    }finally{
        cursor.close();
    }       
    return rows;
}

public static String getAsString(Cursor cursor, int colIndex){
    String retVal = null;
    if(null != cursor){
        switch(cursor.getType(colIndex)){
        case Cursor.FIELD_TYPE_INTEGER:
            retVal = String.valueOf(cursor.getInt(colIndex));
            break;
        case Cursor.FIELD_TYPE_BLOB:
            retVal = String.valueOf(cursor.getBlob(colIndex));
            break;
        case Cursor.FIELD_TYPE_FLOAT:
            retVal = String.valueOf(cursor.getFloat(colIndex));
            break;
        case Cursor.FIELD_TYPE_NULL:
            retVal = String.valueOf(null);
            break;              
        case Cursor.FIELD_TYPE_STRING:
            retVal = cursor.getString(colIndex);
            break;
        }
    }
    return retVal;
}
于 2013-10-05T06:08:16.940 回答