Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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
Android 现有SQLite数据库表中的CursorIndexOutOfBoundsExpection_Android_Sqlite_Cursor_Indexoutofboundsexception - Fatal编程技术网

Android 现有SQLite数据库表中的CursorIndexOutOfBoundsExpection

Android 现有SQLite数据库表中的CursorIndexOutOfBoundsExpection,android,sqlite,cursor,indexoutofboundsexception,Android,Sqlite,Cursor,Indexoutofboundsexception,从数据库中的一个表调用时出错 使用: public Cursor getTable(String table, String where) { SQLiteDatabase db = getReadableDatabase(); SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); qb.setTables(table); Cursor c = qb.query(db, null,

从数据库中的一个表调用时出错

使用:

public Cursor getTable(String table, String where) {

        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();


        qb.setTables(table);
        Cursor c = qb.query(db, null, where, null,
                null, null, null);

        c.moveToFirst();
        return c;

    }
以及:

这项工作:

currentZone.c1.setChest(new Armor(db.getTable("items", "_id = 2"), db.getTable("armor", "itemid = 2")));
我对我的武器类做了基本相同的事情,但我得到了以下错误:

03-29 00:50:08.426: E/AndroidRuntime(14696): FATAL EXCEPTION: main
03-29 00:50:08.426: E/AndroidRuntime(14696): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rpgengine/com.example.rpgengine.MainActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.os.Looper.loop(Looper.java:137)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.main(ActivityThread.java:4745)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at java.lang.reflect.Method.invokeNative(Native Method)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at java.lang.reflect.Method.invoke(Method.java:511)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at dalvik.system.NativeStart.main(Native Method)
03-29 00:50:08.426: E/AndroidRuntime(14696): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:418)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at com.example.rpgengine.Weapon.<init>(Weapon.java:16)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at com.example.rpgengine.MainActivity.onCreate(MainActivity.java:81)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.Activity.performCreate(Activity.java:5008)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
03-29 00:50:08.426: E/AndroidRuntime(14696):    ... 11 more

错误在武器项目光标中


任何帮助都将不胜感激。

首先检查您的表是否有数据执行此查询
Cursor c=qb.query(db,null,where,null,null,null,null,null)运行时间屏幕截图显示表中的数据。查询将执行,但我认为它返回的是一个空表,因为错误在于尝试访问光标指向的位置,而不是在我实际创建光标时。请查看arm.java第16行,并查看MainActivity.java在第81行得到了什么。在执行其他代码之前,可能需要先检查光标的大小是否大于零。
请求索引0,大小为0
-光标没有行!
03-29 00:50:08.426: E/AndroidRuntime(14696): FATAL EXCEPTION: main
03-29 00:50:08.426: E/AndroidRuntime(14696): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rpgengine/com.example.rpgengine.MainActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.os.Looper.loop(Looper.java:137)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.main(ActivityThread.java:4745)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at java.lang.reflect.Method.invokeNative(Native Method)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at java.lang.reflect.Method.invoke(Method.java:511)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at dalvik.system.NativeStart.main(Native Method)
03-29 00:50:08.426: E/AndroidRuntime(14696): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:418)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at com.example.rpgengine.Weapon.<init>(Weapon.java:16)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at com.example.rpgengine.MainActivity.onCreate(MainActivity.java:81)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.Activity.performCreate(Activity.java:5008)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-29 00:50:08.426: E/AndroidRuntime(14696):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
03-29 00:50:08.426: E/AndroidRuntime(14696):    ... 11 more
currentZone.c1.setWeapon(new Weapon(db.getTable("items", "_id = 1"), db.getTable("weapons", "itemid = 1")));
public Weapon(Cursor generalItems, Cursor weaponItems){
        id = generalItems.getInt(0);
        name = generalItems.getString(1);
        hand = weaponItems.getInt(2);
        damage = weaponItems.getInt(3);
        bonusStat = weaponItems.getInt(4);
        bonusAmount = weaponItems.getInt(5);
    }