我有一个大约有100个表的数据库。在所有表中,所有字段都有不同的数据类型,如int,string等。现在要求是。
当我对任何表使用Select查询时,它应该将特定表的所有字段作为字符串类型。如果select查询可以将所有字段提供为字符串,那么我不需要为cursor.getInt()
数据类型编写int
。无处不在,我只需要使用cursor.getString()
。
请告诉我这样一个选择查询,将所有字段作为字符串类型返回。
答案 0 :(得分:2)
你好@Nil你需要在查询中将int转换为字符串,例如::“select some(some_integer_column as text)from some_table”
答案 1 :(得分:0)
请查看下面的代码段。 getTableContents
会返回包含其他ArrayList
或ArrayList
数据的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;
}