在android中读取空表时应用程序崩溃

时间:2015-05-03 07:42:40

标签: android sqlite indexoutofboundsexception

问题纯粹是表格内的内容。如果表不为空(带有一个或多个记录),则应用程序可以正常运行。我正在删除表的内容,并在读取同一个表后立即抛出异常并且app force关闭。

我试图搜索它但无法得出结论。关键点是:索引超出绑定异常,当我要读表时,会在movetofirst()方法的光标处抛出,我想...请帮忙。

public List<TableData> readForPaymentDetais()
    {
        List<TableData> paymentDetails = new ArrayList<TableData>();
        try
        {
            String selectQuery = "select * from PaymentDetails";
            SQLiteDatabase database = this.getWritableDatabase();
            Cursor cursor = database.rawQuery(selectQuery, null);
            if(cursor.getCount() !=0)
            {
                if(cursor.moveToFirst())
                {
                    do
                    {
                        TableData data = new TableData();
                        data.setPaymentMade(Float.valueOf(cursor.getString(0).toString()));
                        data.setDateOfPayment(cursor.getString(1));

                        paymentDetails.add(data);               
                    }
                    while(cursor.moveToNext());
                }               
            }

            return paymentDetails;
        }
        catch(Exception exc)
        {
            return null;
        }       
    }

1 个答案:

答案 0 :(得分:0)

在执行moveToFirst游标方法之前,请检查游标是否为空。为此,您可以使用以下代码:

 $check = Registration::join('student', 'student.id' ,'=' , 'registration.student_id')
                      ->join('division', 'division.id' ,'=' , 'student.division_id')
                      ->where('student.id' , $registerID->student_id)
                      ->whereIn('student.division_id',[$div->id])->get();

如果光标不为空,请把你的东西放在其他部分。