将SELECT查询中的所有字段作为字符串返回

时间:2013-10-05 04:23:43

标签: android database sqlite android-sqlite

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

请查看下面的代码段。 getTableContents会返回包含其他ArrayListArrayList数据的String。内部列表是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;
}