【问题标题】:diificulty in getting cursor data and store it in a string [duplicate]难以获取游标数据并将其存储在字符串中[重复]
【发布时间】:2014-08-03 07:43:43
【问题描述】:

嘿,我正在学习 android,并且在 sqLite 数据库中遇到了一些问题。我想通过光标从列中获取一组特定的行并将其存储在字符串数组中以在 textview 中显示。这是我用来获取光标数据的方法

public String[] getDetailedSymps(long sympId) {

    String[] columns2 = new String[] { KEY_SYMP_DETAIL, KEY_SYM_ID };
    String details[]= new String[9];
    int i=0;


    Cursor c3 = ourDatabase.query(DATABASE_TABLE2, columns2, KEY_SYM_ID + "=" + sympId, null, null, null, null);
    int iDetail = c3.getColumnIndex(KEY_SYMP_DETAIL);
    while (c3.isAfterLast() == false) {

    details[i]= c3.getString(iDetail);
    i++;
    c3.moveToNext();
    }

        return details;

但是,当我运行代码时,它给了我错误 CursorIndexOutOfBoundException,: index -1 requested with a size of 9, here is the logcat

    08-03 03:22:06.294: W/dalvikvm(1194): threadid=1: thread exiting with uncaught exception (group=0xb4ae2ba8)
08-03 03:22:06.464: E/AndroidRuntime(1194): FATAL EXCEPTION: main
08-03 03:22:06.464: E/AndroidRuntime(1194): Process: com.example.mydb, PID: 1194
08-03 03:22:06.464: E/AndroidRuntime(1194): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mydb/com.example.mydb.DetailActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 9
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.os.Handler.dispatchMessage(Handler.java:102)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.os.Looper.loop(Looper.java:136)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.app.ActivityThread.main(ActivityThread.java:5017)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at java.lang.reflect.Method.invokeNative(Native Method)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at java.lang.reflect.Method.invoke(Method.java:515)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at dalvik.system.NativeStart.main(Native Method)
08-03 03:22:06.464: E/AndroidRuntime(1194): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 9
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at com.example.mydb.Dbadapter.getDetailedSymps(Dbadapter.java:296)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at com.example.mydb.DetailActivity.onCreate(DetailActivity.java:25)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.app.Activity.performCreate(Activity.java:5231)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-03 03:22:06.464: E/AndroidRuntime(1194):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)

谁能帮忙,我在这里做错了什么,在此先感谢。

【问题讨论】:

    标签: android sqlite arrays


    【解决方案1】:

    在读取数据之前,您必须使用方法 c3.moveToFirst()。

    (顺便说一句,如果不存在行则返回 false,这是检查空游标的好方法)。

    【讨论】:

    • 没错!我忘了添加 moveToFirst() 方法,我将它添加到我的代码中,它现在可以工作了,非常感谢! :)
    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 2017-10-03
    • 2022-07-20
    • 2020-07-05
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多