안드로이드 개발 질문/답변
(글 수 45,052)
public Cursor fetchAllRows(){
return mDb.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_ID, KEY_PWD}, null, null, null, null, null);
}
요놈이 불러 오는 기능을 하는 함수 구요...
mCursor = mDbHelpter.fetchAllRows();
getId = mCursor.getString(1);
getPwd = mCursor.getString(2);
이렇게 불러 와서 값을 저장 하려고 하는데.....
07-20 09:16:38.015: ERROR/AndroidRuntime(262): FATAL EXCEPTION: main
07-20 09:16:38.015: ERROR/AndroidRuntime(262): java.lang.RuntimeException: Unable to start activity ComponentInfo{co.kr.Leaderse/co.kr.Leaderse.Main}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 14
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.os.Handler.dispatchMessage(Handler.java:99)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.os.Looper.loop(Looper.java:123)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at java.lang.reflect.Method.invokeNative(Native Method)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at java.lang.reflect.Method.invoke(Method.java:521)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at dalvik.system.NativeStart.main(Native Method)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 14
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at co.kr.Leaderse.Main.onCreate(Main.java:59)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): ... 11 more
로그켓 애러가 이렇게 뜨는데요....
어찌 해결 방법이 없을까요...
부탁 드리겠습니다 ;ㅁ;
return mDb.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_ID, KEY_PWD}, null, null, null, null, null);
}
요놈이 불러 오는 기능을 하는 함수 구요...
mCursor = mDbHelpter.fetchAllRows();
getId = mCursor.getString(1);
getPwd = mCursor.getString(2);
이렇게 불러 와서 값을 저장 하려고 하는데.....
07-20 09:16:38.015: ERROR/AndroidRuntime(262): FATAL EXCEPTION: main
07-20 09:16:38.015: ERROR/AndroidRuntime(262): java.lang.RuntimeException: Unable to start activity ComponentInfo{co.kr.Leaderse/co.kr.Leaderse.Main}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 14
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.os.Handler.dispatchMessage(Handler.java:99)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.os.Looper.loop(Looper.java:123)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at java.lang.reflect.Method.invokeNative(Native Method)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at java.lang.reflect.Method.invoke(Method.java:521)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at dalvik.system.NativeStart.main(Native Method)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 14
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at co.kr.Leaderse.Main.onCreate(Main.java:59)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-20 09:16:38.015: ERROR/AndroidRuntime(262): ... 11 more
로그켓 애러가 이렇게 뜨는데요....
어찌 해결 방법이 없을까요...
부탁 드리겠습니다 ;ㅁ;
에러 읽어 보시면 cursorIndexOutOfBoundsException -1 requested 라고 되있잖아요.
mCursor.moveToFirst() 해 주시면, cursor가 레코드의 처음으로 오게 됩니다.
그 다음 getId 같은 메소드 해 주시고, 그래도 안 되면, 커리에서 cursor를 제대로 받아오는지 확인하세요.
보통 커서 position은 0부터 시작합니다. 0, 1, 2, 3