Android 已请求大小为0的CursorOutfBoundsException索引-1

Android 已请求大小为0的CursorOutfBoundsException索引-1,android,android-sqlite,android-cursor,android-database,Android,Android Sqlite,Android Cursor,Android Database,我有一个名为updateparty的数据库,我必须从中创建hashmap string类型的数组列表。当我尝试从db检索数据时,光标不会移动到下一条记录 下面是插入db的代码 for (int i = 0; i < poslist.size(); i++) { SQLiteDatabase db7 = db.getWritableDatabase(); ContentValues values5= new ContentV

我有一个名为updateparty的数据库,我必须从中创建hashmap string类型的数组列表。当我尝试从db检索数据时,光标不会移动到下一条记录

下面是插入db的代码

for (int i = 0; i < poslist.size(); i++) {


                SQLiteDatabase db7 = db.getWritableDatabase();
                ContentValues values5= new ContentValues();
                values5.put(DBManager.TableInfo.KEYID, ID1);
                values5.put(DBManager.TableInfo.DOCU, document);
                values5.put(DBManager.TableInfo.ATTEND,attendancelist.get(i));
                values5.put(DBManager.TableInfo.EMAIL, emaillist.get(i));
                values5.put(DBManager.TableInfo.PARTY,partytypelist.get(i) );
                values5.put(DBManager.TableInfo.BIO,biometriclist.get(i));
                values5.put(DBManager.TableInfo.KEY_LOGIN_USER,username2);
                String condition5 = DBManager.TableInfo.DOCU + " =?";
                Cursor cursor5 = db7.query(DBManager.TableInfo.UPDATEPARTY, null, condition5, new String[]{DBManager.TableInfo.ATTEND}, null, null, null);
                long status5 = db7.insert(DBManager.TableInfo.UPDATEPARTY, null, values5);
                System.out.println( "Parties insert : " + status5);
                cursor5.close();
                db7.close();
            }
for(int i=0;i
从上面的db创建arraylist的代码:

public ArrayList<HashMap<String, String>>getPartypost(DBOperation db) {
    ArrayList<HashMap<String, String>> listParties11 = new ArrayList<HashMap<String, String>>();

    try {

        String query = "select * from " + DBManager.TableInfo.UPDATEPARTY + " where " + DBManager.TableInfo.KEY_LOGIN_USER + " = '" + GenericMethods.email + "'";
        System.out.println("query:"+query);
        SQLiteDatabase sqlite1 = db.getWritableDatabase();
        Cursor c = sqlite1.rawQuery(query, null);

        while(c.moveToNext()) {
                    HashMap<String, String> selectiondetails10 = new HashMap<String, String>();
           System.out.println("value:"+c.getString(c.getColumnIndex(DBManager.TableInfo.DOCU)));
                    selectiondetails10.put("document_id", c.getString(c.getColumnIndex(DBManager.TableInfo.DOCU)));
                    selectiondetails10.put("att_id", c.getString(c.getColumnIndex(DBManager.TableInfo.ATTEND)));
                    selectiondetails10.put("email", c.getString(c.getColumnIndex(DBManager.TableInfo.EMAIL)));
                    selectiondetails10.put("party_type", c.getString(c.getColumnIndex(DBManager.TableInfo.PARTY)));
                    selectiondetails10.put("biometric", c.getString(c.getColumnIndex(DBManager.TableInfo.BIO)));
                    selectiondetails10.put("exec_email", c.getString(c.getColumnIndex(DBManager.TableInfo.KEY_LOGIN_USER)));

                    listParties11.add(selectiondetails10);

                }

                closeCursor(c);
            //}
       // }
        System.out.println("list size:"+listParties11.size());
        } catch (Exception e) {
        // TODO: handle exception.
        e.printStackTrace();
    }
    db.close();
    return listParties11;
}
publicArrayListGetPartyPost(数据库操作){
ArrayList listParties11=新的ArrayList();
试一试{
String query=“从“+DBManager.TableInfo.UPDATEPARTY+”中选择*,其中“+DBManager.TableInfo.KEY\u LOGIN\u USER+”='“+GenericMethods.email+”;
System.out.println(“查询:+query”);
SQLiteDatabase sqlite1=db.getWritableDatabase();
游标c=sqlite1.rawQuery(查询,空);
while(c.moveToNext()){
HashMap selectiondetails10=新建HashMap();
System.out.println(“值:+c.getString(c.getColumnIndex(DBManager.TableInfo.DOCU));
选择details10.put(“document_id”,c.getString(c.getColumnIndex(DBManager.TableInfo.DOCU));
选择details10.put(“att_id”,c.getString(c.getColumnIndex(DBManager.TableInfo.attain));
选择details10.put(“email”,c.getString(c.getColumnIndex(DBManager.TableInfo.email));
选择details10.put(“party_type”,c.getString(c.getColumnIndex(DBManager.TableInfo.party));
选择details10.put(“biometric”,c.getString(c.getColumnIndex(DBManager.TableInfo.BIO));
选择details10.put(“exec_email”,c.getString(c.getColumnIndex(DBManager.TableInfo.KEY_LOGIN_USER));
列表部分11.添加(选择详细信息10);
}
(c);
//}
// }
System.out.println(“列表大小:+listParties11.size());
}捕获(例外e){
//TODO:处理异常。
e、 printStackTrace();
}
db.close();
返回清单11;
}
这是错误消息:


我需要的是从此数据库创建一个arraylist

将插入代码更改为:

            SQLiteDatabase db7 = db.getWritableDatabase();
            ContentValues values5= new ContentValues();
            for (int i = 0; i < poslist.size(); i++) {
            values5.put(DBManager.TableInfo.KEYID, ID1);
            values5.put(DBManager.TableInfo.DOCU, document);
            values5.put(DBManager.TableInfo.ATTEND,attendancelist.get(i));
            values5.put(DBManager.TableInfo.EMAIL, emaillist.get(i));
            values5.put(DBManager.TableInfo.PARTY,partytypelist.get(i) );
            values5.put(DBManager.TableInfo.BIO,biometriclist.get(i));
            values5.put(DBManager.TableInfo.KEY_LOGIN_USER,username2);
            String condition5 = DBManager.TableInfo.DOCU + " =?";
            Cursor cursor5 = db7.query(DBManager.TableInfo.UPDATEPARTY, null, condition5, new String[]{DBManager.TableInfo.ATTEND}, null, null, null);
            long status5 = db7.insert(DBManager.TableInfo.UPDATEPARTY, null, values5);
            System.out.println( "Parties insert : " + status5);
            cursor5.close();
            db7.close();
        }
SQLiteDatabase db7=db.getWritableDatabase();
ContentValues 5=新的ContentValues();
对于(int i=0;i
使用以下代码,而循环应如下所示: 而(!c.isAfterLast())

publicArrayListGetPartyPost(数据库操作){
ArrayList listParties11=新的ArrayList();
试一试{
String query=“从“+DBManager.TableInfo.UPDATEPARTY+”中选择*,其中“+DBManager.TableInfo.KEY\u LOGIN\u USER+”='“+GenericMethods.email+”;
System.out.println(“查询:+query”);
SQLiteDatabase sqlite1=db.getWritableDatabase();
游标c=sqlite1.rawQuery(查询,空);
c、 moveToFirst();
而(!c.isAfterLast()){
HashMap selectiondetails10=新建HashMap();
System.out.println(“值:+c.getString(c.getColumnIndex(DBManager.TableInfo.DOCU));
选择details10.put(“document_id”,c.getString(c.getColumnIndex(DBManager.TableInfo.DOCU));
选择details10.put(“att_id”,c.getString(c.getColumnIndex(DBManager.TableInfo.attain));
选择details10.put(“email”,c.getString(c.getColumnIndex(DBManager.TableInfo.email));
选择details10.put(“party_type”,c.getString(c.getColumnIndex(DBManager.TableInfo.party));
选择details10.put(“biometric”,c.getString(c.getColumnIndex(DBManager.TableInfo.BIO));
选择details10.put(“exec_email”,c.getString(c.getColumnIndex(DBManager.TableInfo.KEY_LOGIN_USER));
列表部分11.添加(选择详细信息10);
c、 moveToNext();
}
(c);
//}
// }
系统退出。
public ArrayList<HashMap<String, String>>getPartypost(DBOperation db) {
    ArrayList<HashMap<String, String>> listParties11 = new ArrayList<HashMap<String, String>>();

    try {

        String query = "select * from " + DBManager.TableInfo.UPDATEPARTY + " where " + DBManager.TableInfo.KEY_LOGIN_USER + " = '" + GenericMethods.email + "'";
        System.out.println("query:"+query);
        SQLiteDatabase sqlite1 = db.getWritableDatabase();
        Cursor c = sqlite1.rawQuery(query, null);
             c.moveToFirst();
        while(!c.isAfterLast()) {
                    HashMap<String, String> selectiondetails10 = new HashMap<String, String>();
           System.out.println("value:"+c.getString(c.getColumnIndex(DBManager.TableInfo.DOCU)));
                    selectiondetails10.put("document_id", c.getString(c.getColumnIndex(DBManager.TableInfo.DOCU)));
                    selectiondetails10.put("att_id", c.getString(c.getColumnIndex(DBManager.TableInfo.ATTEND)));
                    selectiondetails10.put("email", c.getString(c.getColumnIndex(DBManager.TableInfo.EMAIL)));
                    selectiondetails10.put("party_type", c.getString(c.getColumnIndex(DBManager.TableInfo.PARTY)));
                    selectiondetails10.put("biometric", c.getString(c.getColumnIndex(DBManager.TableInfo.BIO)));
                    selectiondetails10.put("exec_email", c.getString(c.getColumnIndex(DBManager.TableInfo.KEY_LOGIN_USER)));

                    listParties11.add(selectiondetails10);
c.moveToNext();
                }

                closeCursor(c);
            //}
       // }
        System.out.println("list size:"+listParties11.size());
        } catch (Exception e) {
        // TODO: handle exception.
        e.printStackTrace();
    }
    db.close();
    return listParties11;
}