我的代码中有一个检查数据库内容的方法。以下是代码:
if(rowId >= 1){
Cursor cursor = adapter.fetchAllQRurl();
int length = cursor.getCount();
for( int i=0; i<length ; i++){
if(contents.equals(cursor.getString(i))){
Toast.makeText(this, "The entry already exists.",Toast.LENGTH_LONG).show();
}
}
但我总是得到以下错误。我不确定“cursor.getString(i)”出了什么问题 我错过了我的代码吗?
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 5
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
at android.database.AbstractWindowedCursor.getShort(AbstractWindowedCursor.java:69)
答案 0 :(得分:2)
尝试这种方式从Cursor获取值。 您需要将光标位置放在开头,以便它返回值
Cursor cursor = adapter.fetchAllQRurl();
if (cursor.moveToFirst()) {
do {
String Test = mNotesCursor.getString("Your_Column_Name");
} while (cursor.moveToNext());
}
答案 1 :(得分:1)
从Cursor对象获取数据的更好方法是:
if (cursor.moveToFirst()){
do{
String data = cursor.getString(i);
// do what ever you want here
}while(moveToNext());
}
cursor.close();
答案 2 :(得分:0)
您的代码中存在一些问题:
cursor.getCount()
返回行数。但是,在循环中,您使用的是cursor.getString(i)
,用于访问第n列。