2013-10-05 70 views
0

我有一个拥有大约100个表的数据库。在所有的表中,所有的字段都有不同的数据类型,比如int,string等。现在的要求是。将SELECT查询中的所有字段作为字符串返回

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

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

+0

但是使用cursor.getInt – KOTIOS

+0

@Monica问题:我想他要填写一些用户界面,而不考虑每个字段的类型。我可能会想到其他六个原因,为什么这可能有用。 –

+0

@Monica我有自动生成的功能,从所有100个表格中选择数据,并提供所有表格数据的个别数组列表。现在在相同的功能我需要写cursor.getString(columnname),如果数据类型是int然后cursor.getInt(ColumnName)。但我不知道哪个字段有int和哪个字段有字符串。所以我想每个字段都是String。 – nil

回答

2

嗨@Nil你需要转换INT为字符串像::“选择投从some_table(some_integer_column文本)”查询

+0

是的,这是部分正确的答案。但我需要所有字段作为文本。而且我不想为每一列编写这个'cast(some_integer_column as text)'。因为有一些表有超过100个字段。 – nil

0

请检查下面的代码片段。 getTableContents返回包含另一个ArrayListString数据的ArrayList。内部列表是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; 
} 
相关问题