データベースからデータを取得しようとすると、カーソルが次のレコードに移動しません。これは、ハッシュマップ型の配列リストを作成する必要があるupdatepartyというデータベースです。CursorOutofBoundsException - 0のサイズでインデックス-1が要求されました
ここに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();
}
デシベル以上からのArrayListを作成するためのコード:
私は必要なものこのデシベル
からの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;
}
これは、エラーメッセージがあります
エラーは、このラインで与えられる(c.isAfterLast()!): 'しばらく(c.moveToNext ()) 'である。そして、それはカーソルが空である(クエリがレコードを返さなかった)ために発生します。 –
はい..クエリが間違っていました。!!!!!! – user7245
とにかく、それらの間を移動する前に、カーソルがレコードを持っているか常に確認してください。 –