我在 Android Studio 中遇到与光标有关的错误。
我的代码中有以下行
String data = cursor.getString(cursor.getColumnIndex(columnIndex));
columnIndex 被传递到方法中。这部分 cursor.getColumnIndex(columnIndex) 产生以下错误
值必须≥ 0
它发生在我的 DBHelper 类和我的回收器适配器中,当它也使用游标时。
它以红色显示为错误,但应用程序仍然可以毫无问题地构建和运行。
有任何想法吗?
谢谢你的帮助。
21 年 9 月 22 日更新
我正在根据要求添加一些代码,以及我是如何解决这个错误的。不确定它是否是最好的方法。
所以我使用的方法是这样的......
public String getTripInfo(String tableName, int tripNo, String columnIndex){
String data = "";
// Select all query
String selectQuery = "SELECT * FROM " + tableName + " WHERE " + TRIP_DETAILS_TRIP_NUMBER + "=" + tripNo;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Looping through all rows and adding to list
if(cursor.moveToFirst()){
do{
data = cursor.getString(cursor.getColumnIndex(columnIndex));
} while(cursor.moveToNext());
}
// Closing connections
cursor.close();
db.close();
//Returning number plates
return data;
}
错误在 do while 循环中。红色部分为“cursor.getColumnIndex(columnIndex))”我解决此错误的方法是使用以下代码
public String getTripInfo(String tableName, int tripNo, String columnIndex){
String data = "";
// Select all query
String selectQuery = "SELECT * FROM " + tableName + " WHERE " + TRIP_DETAILS_TRIP_NUMBER + "=" + tripNo;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Looping through all rows and adding to list
if(cursor.moveToFirst()){
do{
int index = cursor.getColumnIndex(columnIndex);
data = cursor.getString(index);
} while(cursor.moveToNext());
}
// Closing connections
cursor.close();
db.close();
//Returning number plates
return data;
}
最佳答案
我有这样的错误。
我的解决方案:更改方法getColumnIndex
进入 getColumnIndexOrThrow
.
关于Android Studio - 值必须≥ 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69053061/