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.
It would seem like you have an emtpy cursor. Instead of checking whether it is null try checkcing
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.
Try using
try by changing this line
by
and also add this in if condition