我有一个数据库,我正在使用以下命令对其进行查询
Cursor mCursor = mapDb.query(MY_TABLE, new String[] {KEY_ONEID, KEY_TWOID}, "trim("+KEY_TWOID + ") != '' ", null, null, null, null);
在SQL术语中,字面意思是:SELECT OneId, TwoId FROM auth WHERE trim(TwoId) != ''
在我的SQLite浏览器中,使用原始的SQL查询可以显示相关的行,因此游标对象应该包含相同的结果。
其次,在我的java方法中,我使用了一个条件来检查这个结果是否有任何内容。
if(mCursor.getColumnIndex(KEY_ONEID) > -1) //if > -1 then the mCursor returned a row
{
if(mCursor.getString(mCursor.getColumnIndex(KEY_ONEID)).contains(id)) //breaks here
return mCursor.getString(mCursor.getColumnIndex(KEY_TWOID));
else
return "";
}但是由于某些原因,即使mCursor散列映射应该返回所有值,下一条条件语句
mCursor.getString(mCursor.getColumnIndex(KEY_ONEID)).contains(id)
仍然返回:An exception occurred: android.database.CursorIndexOutOfBoundsException
这一行抛出了异常:mCursor.getString(mCursor.getColumnIndex(KEY_ONEID)),返回语句中的下一项也抛出了异常
我对如何检索特定的行值感到困惑!因为我已经提取了数据库并运行了相同的查询,并且可以清楚地看到我想要的两个值都确实存在!
游标函数没有提供很多其他的方法来检索值,所以我很欣赏你的见解!
发布于 2015-06-15 19:11:50
您只需要调用cursor.moveToNext(),从头开始移动到下一个开始,这样我们就不需要调用moveToFirst了。moveToFirst实际上是在某些东西中间调用的。
while (cursor.moveToNext()) {
//whatever you want to do
}https://stackoverflow.com/questions/6653502
复制相似问题