【发布时间】:2016-03-16 09:31:53
【问题描述】:
我希望从一个 sqlite 数据库中获取一行。
我使用以下代码来获取值。
public ShipmentStatusDao getShipmentStatusRow(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_SHIPMENTSTATUS, new String[]{KEY_NOTES,
KEY_PHOTOS, KEY_DOCUMENTS}, KEY_ID + "=?",
new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
ShipmentStatusDao notification = new ShipmentStatusDao(cursor.getInt(0),
cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7), cursor.getString(8));
return notification;
}
我使用下面的代码来调用上面的方法,
ShipmentStatusDao shipmentStatusRow = db.getShipmentStatusRow(1);
shipmentStatusRow.getDate();
我收到以下错误,
java.lang.IllegalStateException: 无法读取第 0 行第 3 列 光标窗口。确保光标在之前正确初始化 从中访问数据。 在 android.database.CursorWindow.nativeGetString(Native Method) 在 android.database.CursorWindow.getString(CursorWindow.java:438) 在 android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51) 在 com.vaighai.handlers.NotificationDbHandler.getShipmentStatusRow(NotificationDbHandler.java:364) 在 com.vaighai.fragments.StatusFragment$5.onItemClick(StatusFragment.java:237) 在 android.widget.AdapterView.performItemClick(AdapterView.java:301) 在 android.widget.AbsListView.performItemClick(AbsListView.java:1510) 在 android.widget.AbsListView$PerformClick.run(AbsListView.java:3339) 在 android.os.Handler.handleCallback(Handler.java:730) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:5419) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 在 dalvik.system.NativeStart.main(本机方法)03-16 14:54:32.826 2337-7411/? I/ActivityManager:通知 ApplicationCrash
我怎样才能纠正上述错误?
【问题讨论】:
-
if (cursor != null){//your code }这样的改变会帮助你