我有一个大约有 100 个表的数据库。在所有表中,所有字段都有不同的数据类型,如 int、string 等。现在要求是。
当我对任何表使用 Select 查询时,它应该将特定表的所有字段作为字符串类型提供给我。如果选择查询可以将所有字段作为字符串提供,那么我不需要cursor.getInt()
为int
数据类型编写。我只需要在任何地方使用cursor.getString()
.
请告诉我这样一个选择查询,它将所有字段都作为字符串类型返回。
我有一个大约有 100 个表的数据库。在所有表中,所有字段都有不同的数据类型,如 int、string 等。现在要求是。
当我对任何表使用 Select 查询时,它应该将特定表的所有字段作为字符串类型提供给我。如果选择查询可以将所有字段作为字符串提供,那么我不需要cursor.getInt()
为int
数据类型编写。我只需要在任何地方使用cursor.getString()
.
请告诉我这样一个选择查询,它将所有字段都作为字符串类型返回。
嗨@Nil,您需要在查询中将 int 转换为字符串,例如:“select cast(some_integer_column as text) from some_table”
请检查下面的代码片段。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;
}