5

我知道Cursor有 getString, Int等方法,但没有类似的东西

mycursor.GetObject(index)

我想创建一个返回对象的动态方法,我只转换它。

还是可以 mycursor.GetString(index)用于任何类型? String,Float,Double,Long,Short, Blob,Int,ETC

我可以使用例如 aFloat或 aInt或任何类型并转​​换它?

例如

(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);

它会工作吗?我可以mycursor.GetString()用于任何类型吗?

4

2 回答 2

4

您可以获取 column 的类型,然后从switch语句中调用适当的方法(并自行构建您要求的方法)。

使用getString不同的类型是不安全的,因为文档指定:

当列值为 null 或列类型不是字符串类型时,结果以及此方法是否引发异常是实现定义的。

于 2013-08-08T23:09:13.803 回答
2

你想尝试类似的东西:

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();

query()应该看起来像:

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);
}

您需要更改 SQL 代码以满足您的需要。在这种情况下,我将检索与查询匹配的列的每个值,但您可以修改SELECT语句。希望能帮助到你。

于 2013-08-08T23:41:44.640 回答