Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android.database.CursorIndexOutOfBoundsException:请求索引8,大小为8_Java_Android_Sqlite_Android Sqlite - Fatal编程技术网

Java android.database.CursorIndexOutOfBoundsException:请求索引8,大小为8

Java android.database.CursorIndexOutOfBoundsException:请求索引8,大小为8,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我遇到以下问题,任何帮助都会非常有帮助(我总是向上投票): 出于某种原因,我的代码记录了我认为应该在两个集合中完成的事情,这是在六个集合中完成的,并且给了我一个错误 这是我的密码: package com.nxstudio.suratbus; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import and

我遇到以下问题,任何帮助都会非常有帮助(我总是向上投票):

出于某种原因,我的代码记录了我认为应该在两个集合中完成的事情,这是在六个集合中完成的,并且给了我一个错误

这是我的密码:

  package com.nxstudio.suratbus;

    import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

/**
 * Created by rahul on 7/5/2016.
 */
public class DBHelper {

public void insert_coordinates(Context context){

    try {

        SQLiteDatabase eventsDB = context.openOrCreateDatabase("Coordinates", Context.MODE_PRIVATE, null);

        eventsDB.execSQL("CREATE TABLE IF NOT EXISTS coordinates (latitude VARCHAR,longitude VARCHAR,station VARCHAR)");

        eventsDB.execSQL("INSERT INTO coordinates (latitude, longitude ,station) VALUES ('1', '1','Station1')");

        eventsDB.execSQL("INSERT INTO coordinates (latitude, longitude ,station) VALUES ('2', '2','Station2')");

        Cursor c = eventsDB.rawQuery("SELECT * FROM coordinates", null);

        int latIndex = c.getColumnIndex("latitude");
        int longIndex = c.getColumnIndex("longitude");
        int stationIndex = c.getColumnIndex("station");

        if (c != null && c.moveToFirst()){

        while (c != null) {

            Log.i("lat", c.getString(latIndex));
            Log.i("long", Integer.toString(c.getInt(longIndex)));
            Log.i("Station", Integer.toString(c.getInt(stationIndex)));

            c.moveToNext();
        }
    }


    }
    catch (Exception e) {

        e.printStackTrace();

    }



}




}
这是我的日志:

    07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/lat: 1
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/long: 1
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/Station: 0
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/lat: 2
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/long: 2
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/Station: 0
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/lat: 1
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/long: 1
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/Station: 0
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/lat: 2
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/long: 2
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/Station: 0
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/lat: 1
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/long: 1
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/Station: 0
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/lat: 2
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/long: 2
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/Station: 0
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/lat: 1
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/long: 1
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/Station: 0
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/lat: 2
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/long: 2
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus I/Station: 0
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err: android.database.CursorIndexOutOfBoundsException: Index 8 requested, with a size of 8
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.database.AbstractCursor.checkPosition(AbstractCursor.java:432)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at com.nxstudio.suratbus.DBHelper$override.insert_coordinates(DBHelper.java:35)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at com.nxstudio.suratbus.DBHelper$override.access$dispatch(DBHelper.java)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at com.nxstudio.suratbus.DBHelper.insert_coordinates(DBHelper.java:0)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at com.nxstudio.suratbus.MainActivity.onCreate(MainActivity.java:75)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.app.Activity.performCreate(Activity.java:5245)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2164)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2249)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3740)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.app.ActivityThread.access$900(ActivityThread.java:141)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.os.Looper.loop(Looper.java:136)
07-05 14:38:05.512 20886-20886/com.nxstudio.suratbus W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5052)
07-05 14:38:05.522 20886-20886/com.nxstudio.suratbus W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
07-05 14:38:05.522 20886-20886/com.nxstudio.suratbus W/System.err:     at java.lang.reflect.Method.invoke(Method.java:515)
07-05 14:38:05.522 20886-20886/com.nxstudio.suratbus W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-05 14:38:05.522 20886-20886/com.nxstudio.suratbus W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
07-05 14:38:05.522 20886-20886/com.nxstudio.suratbus W/System.err:     at dalvik.system.NativeStart.main(Native Method)
提前感谢

试试这个:

while (c.moveToNext();) {
        Log.i("lat", c.getString(latIndex));
        Log.i("long", Integer.toString(c.getInt(longIndex)));
        Log.i("Station", Integer.toString(c.getInt(
    }


这将防止光标越过最后一个条目

要修复崩溃,请更换

while (c != null) {
    //...
    c.moveToNext();
}
用例如

do {
     //...
} while (c.moveToNext());
这样,当没有更多结果时,循环将终止


对于“两组在六组中完成”问题,您可以在
创建表之前添加
删除表(如果存在坐标)
,以删除包含较旧数据的旧表。

您的光标没有索引8,因此您得到
游标索引自动边界异常

因此,在从该索引获取值之前,应该检查游标是否包含该索引

 do {
     if (mCursor.getCount() > latIndex && mCursor.getCount() > longIndex && mCursor.getCount() > stationIndex) {
         Log.i("lat", c.getString(latIndex));
         Log.i("long", Integer.toString(c.getInt(longIndex)));
         Log.i("Station", Integer.toString(c.getInt(stationIndex)));
     }
 } while (c.moveToNext());

你混淆了行和列索引,循环永远不会终止。嘿,潘文林谢谢你的尝试,我很感激