0

約100のテーブルを持つデータベースがあります。すべてのテーブルで、すべてのフィールドに int、string などの異なるデータ型があります。現在の要件は次のとおりです。

任意のテーブルに対して Select クエリを使用すると、特定のテーブルのすべてのフィールドが文字列型として表示されます。選択クエリがすべてのフィールドを文字列として提供できる場合、データ型を記述cursor.getInt()する必要はありません。intどこでも使用するだけで済みますcursor.getString()

フィールドを全て文字列型で返すようなselectクエリを教えてください。

4

2 に答える 2

2

こんにちは@Nil次のようなクエリでintを文字列にキャストする必要があります:: "select cast(some_integer_column as text) from some_table"

于 2013-10-05T04:33:54.333 に答える
0

以下のコード スニペットを確認してください。は、別のまたはデータを含むを返しますgetTableContents。内側のリストは、テーブルの各タプル/行の内容です。メソッドには、データ型をチェックし、必要に応じて変換する実際のソースが含まれています。ArrayListArrayListStringStringgetAsStringString

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 に答える