Android Cursor? how to read object data?
i know a Cursor
has method for get String, Int
, etc
but isn't there somethings as
mycursor.GetObject(index)
I want to create a dynamic method which returns an object and I only cast it.
or is it possible use
mycursor.GetString(index)
for any type? String,Float,Double,Long,Short, Blob,Int
,etc
and I can use for example for a Float
or a Int
or any type and cast it?
for example
(Blob) newblob=mycursor.GetString(i_return_BloB);
(Int) newint=mycursor.GetString(i_return_Int);
(Float) newfloat=mycursor.GetString(i_return_Float);
(Double) newdouble=mycursor.GetString(i_return_Double);
(Long) newlong=mycursor.GetString(i_return_long);
(Short) newshort=mycursor.GetString(i_return_short);
would it work?
could i use mycursor.GetString()
for any type?
Solution 1:
You can get the type of a column, and then call the appropiate method from a switch
statement (and build the method you're asking for by yourself).
Using getString
for different types is not safe, as the docs specify:
The result and whether this method throws an exception when the column value is null or the column type is not a string type is implementation-defined.
Solution 2:
You want to try something like:
DataBaseHelper myDbHelper = new DataBaseHelper(this);
ArrayList<String> mArrayList = new ArrayList<String>();
String[] array;
Cursor c = myDbHelper.query(query);
int id = c.getColumnIndex("COLUMN_NAME");
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
mArrayList.add(c.getString(id));
}
array = mArrayList.toArray(new String[0]);
System.out.println(array[0]);
c.close();
myDbHelper.close();
And your query()
should look something like:
public Cursor query(String query){
String selectAll = null;
if(query.length() > 1){
selectAll = "SELECT TABLENAME.COLUMNAME FROM TABLENAME WHERE TABLENAME.COLUMNNAME LIKE" + query + ";";
return myDataBase.rawQuery(selectAll, null);
}
You need to change the SQL code to suit your needs. In this case I'm retrieving every value of a column that match the query, but you could modify the SELECT
statement. Hope it helps.