#android #database #sqlite #cursor
#Android #База данных #sqlite #курсор
Вопрос:
У меня очень странная проблема, которую пока не удалось решить.
Caused by: java.lang.IllegalStateException: Couldn't read row 9, col 1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
Я искал похожие сообщения, но все равно не смог найти никакого решения.
У меня есть некоторые данные, Sqlite
и когда я пытаюсь их получить, у меня есть это error
.
Вот мой code
способ извлечения data
:
public static ArrayList<DetailsItemI> selectDetailsWithRecId(long recId) {
int tabId;
String tag, value;
String selection = DBHelper.DETAILS_REC_ID " = " recId;
Cursor c = db.query(DBHelper.DETAILS_TABLE, null, selection, null, null, null, DBHelper.DETAILS_TAB_ID " ASC");
ArrayList<DetailsItemI> list = new ArrayList<DetailsItemI>();
DetailsItemI inputItem;
if (c.moveToFirst()) {
do {
tabId = c.getInt(c.getColumnIndex(DBHelper.DETAILS_TAB_ID));
tag = c.getString(c.getColumnIndex(DBHelper.DETAILS_VIEW_PARAMETER));
value = c.getString(c.getColumnIndex(DBHelper.DETAILS_VALUE));
inputItem = new DetailsItem(tabId, tag, value);
list.add(inputItem);
} while (c.moveToNext());
}
return list;
}
Column
count
in cursor
равен 4, поэтому проблема не должна быть в этом. Я думаю, что это row
проблема, но понятия не имею, почему.
Заранее спасибо за помощь.
Полная трассировка стека:
06-30 13:39:17.763 1033-1033/ge.altasoft.datacollector E/CursorWindow﹕ Failed to read row 9, column 1 from a CursorWindow which has 9 rows, 4 columns.
06-30 13:39:17.768 1033-1033/ge.altasoft.datacollector E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{ge.altasoft.datacollector/ge.altasoft.datacollector.DetailsActivity}: java.lang.IllegalStateException: Couldn't read row 9, col 1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
at android.app.ActivityThread.access$700(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Couldn't read row 9, col 1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetLong(Native Method)
at android.database.CursorWindow.getLong(CursorWindow.java:511)
at android.database.CursorWindow.getInt(CursorWindow.java:578)
at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:69)
at ge.altasoft.database.DBManager.selectDetailsWithRecId(DBManager.java:358)
at ge.altasoft.datacollector.DetailsActivity.fillTheData(DetailsActivity.java:278)
at ge.altasoft.datacollector.DetailsActivity.initViews(DetailsActivity.java:71)
at ge.altasoft.datacollector.DetailsActivity.onCreate(DetailsActivity.java:62)
at android.app.Activity.performCreate(Activity.java:5188)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
at android.app.ActivityThread.access$700(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)
ОТРЕДАКТИРОВАНО
У app
меня много fields
того, что должно быть заполнено. Я сохраняю их все как strings
. Некоторые из fields
Image
Fields
них, и я save
те images
, как Base64 Strings
.
На одном tab
у меня есть 3 Image
Fields
, и это error
происходит во время извлечения третьего image
field
, но это происходит только с 3 specific image combination
. Понятия не имею, почему.
Комментарии:
1. для чего вам нужен метод selectDetailsWithRecId()?
2. Пожалуйста, опубликуйте полную трассировку стека.
3. selectDetailsWithRecId() предназначен для получения сохраненных данных.
4. @laalto я добавил полную трассировку стека
5. скорее всего, вы не используете SimpleCursorAdapter, почему?