Java 执行代码时,sqlite中出现错误=CursorIndexOutOfBoundsException
这是我的SqlLite查询代码,我在其中定义了一个方法,从类别中获取颜色类别,并将其作为字符串返回给该方法Java 执行代码时,sqlite中出现错误=CursorIndexOutOfBoundsException,java,android,android-sqlite,android-cursor,android-database,Java,Android,Android Sqlite,Android Cursor,Android Database,这是我的SqlLite查询代码,我在其中定义了一个方法,从类别中获取颜色类别,并将其作为字符串返回给该方法 public String getCategoryColor(String task) { SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery( "select color from categories where title='"+task+"'", null );
public String getCategoryColor(String task) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select color from categories where title='"+task+"'", null );
return res.getString(0);
}
代码
公共抽象布尔值moveToFirst()将光标移动到第一行。如果光标为空,此方法将返回false 返回移动是否成功
if(cursor != null && cursor.moveToFirst()) {
String id = cursor.getString(0);
Log.v(id, id + "Color" );
return color;
}
公共抽象布尔值moveToFirst()将光标移动到第一行。如果光标为空,此方法将返回false 返回移动是否成功
if(cursor != null && cursor.moveToFirst()) {
String id = cursor.getString(0);
Log.v(id, id + "Color" );
return color;
}
光标中没有结果。此外,还应使用
moveToNext()
光标中没有结果。此外,还应使用
moveToNext()
以下是完美的解决方案: 1.首先检查它是否为空,大小如下:
public String getCategoryColor(String task) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select color from categories where title='"+task+"'", null );
if (res !=null && res.getCount > 0)
{
res.moveToFirst();
return res.getString(0);
}
else
{
return "";
}
}
希望对您有所帮助。以下是完美的解决方案: 1.首先检查它是否为空,大小如下:
public String getCategoryColor(String task) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select color from categories where title='"+task+"'", null );
if (res !=null && res.getCount > 0)
{
res.moveToFirst();
return res.getString(0);
}
else
{
return "";
}
}
cursor.moveToFirst()
在获取字符串之前,这就是为什么您没有调用CurrIndexOutbound异常的原因
cursor.moveToFirst()
在获取字符串之前,这就是您获取CurrIndexOutofBond异常的原因
您应该纠正
您的getCategoryColor
方法
public String getCategoryColor(String task)
{
SQLiteDatabase db = this.getReadableDatabase();
String get_COLOR = "";
String last_query = "SELECT color FROM categories WHERE title='"+ task+"'";
Cursor c = db.rawQuery(last_query, null);
if (c != null && c.moveToFirst())
{
get_COLOR = c.getString(0);
}
c.close();
db.close();
return get_COLOR;
}
您应该纠正
您的getCategoryColor
方法
public String getCategoryColor(String task)
{
SQLiteDatabase db = this.getReadableDatabase();
String get_COLOR = "";
String last_query = "SELECT color FROM categories WHERE title='"+ task+"'";
Cursor c = db.rawQuery(last_query, null);
if (c != null && c.moveToFirst())
{
get_COLOR = c.getString(0);
}
c.close();
db.close();
return get_COLOR;
}
共享错误logcat。光标中没有结果。您应该检查moveToFirst()返回的内容(很可能为false)。您还应该使用moveToNext(),而不是moveToFirst()。尝试记录
res.getCount()代码>。看起来是零我没有使用MOSTTOFFIRST()或moveToNext()。请在此处共享编辑的代码。谢谢谢谢@Intellijshare error logcat。光标中没有结果。您应该检查moveToFirst()返回的内容(很可能为false)。您还应该使用moveToNext(),而不是moveToFirst()。尝试记录res.getCount()代码>。看起来是零。我没有使用MOSTTOFFIRST()或moveToNext()。请在此处共享编辑后的代码。谢谢谢谢@Intellij当curson计数为0时出现问题。当curson计数为0时出现问题。希望这对您有所帮助。希望这对您有所帮助。