CursorIndexOutOfBoundsException Index 0 requested, with a size of 0
21,141
Solution 1
It would seem like you have an emtpy cursor. Instead of checking whether it is null try checkcing
if(mCursor.getCount() > 0)
{
//do stuff
}
try removing your where condition to make sure you actually get data when running the select statement. If you still get nothing you might have a typo in your tablenames, or failed to connect/create the database/tables.
Cursor mCursor = db.query("sys_interface_text", new String[] {
"id_interface_text", "item_name","form_label_id", "form_rank"},
"form_label_id = 1706", null, null, null,
null);
Solution 2
Try using
while(cursor.moveToNext())
{
if(cursor.isFirst())
{
//Your code goes here in your case
return mCursor.getString(mCursor.getColumnIndex(KEY_ITEM_NAME));
}
}
finaly
{
if(mCursor!= null)
{
mCursor.close();
}
}
Author by
Gabrielle
Updated on July 14, 2022Comments
-
Gabrielle almost 2 years
I'm trying to get a text from a certain row of my database. For this, I made this function
public String getTranslation(long rowId) throws SQLException { String str = null; Cursor mCursor = db.query( true, TABLE_LANGUAGE_FR, new String[] { KEY_ID_INTERFACE_TEXT, KEY_ITEM_NAME,KEY_FORM_LABEL_ID, KEY_FORM_RANK }, KEY_FORM_LABEL_ID + "=" + rowId, null, null, null, null, null ); if (mCursor != null) { mCursor.moveToFirst(); str = mCursor.getString(mCursor.getColumnIndex(KEY_ITEM_NAME)); } return str; }
and I call it like this :
db = new DbAdapter(this); db.createDatabase(); db.openDataBase(); String str = db.getTranslation(1706);
My table looks like this :
I get this error :
09:32:08.965 307 com.Orange ERROR AndroidRuntime Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 09:32:08.965 307 com.Orange ERROR AndroidRuntime at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580) 09:32:08.965 307 com.Orange ERROR AndroidRuntime at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214) 09:32:08.965 307 com.Orange ERROR AndroidRuntime at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41) 09:32:08.965 307 com.Orange ERROR AndroidRuntime at com.Orange.Database.DbAdapter.getTranslation(DbAdapter.java:141) 09:32:08.965 307 com.Orange ERROR AndroidRuntime at com.Orange.Authentication.onCreate(Authentication.java:32)
Why am I getting this error? What am I doing wrong here?
Thanks in advance.