-2

所以在这里,我让这个应用程序从数据库中检索记录,我从我的数据库中有 5 个条目,并使用此代码检索它;

Cursor c = dbconnection.rawQuery("SELECT * from Patients", null);

之后,我循环它以检索数据库中的数据行;

c.moveToFirst();
while(!c.isAfterLast())
{
 //Some code to put records per column in to a Patient Object 
 c.moveToNext();
}

所以我的问题是,当它进入循环时,我的模拟器冻结了,当我试图将每条记录显示到日志中时,我不会因为它自己已经冻结的模拟器。

有人可以启发我解决这个问题吗,这个问题对我来说真的很新

编辑

是的,已经尝试过 baya 和 ofir 的建议。他们解决了,但是我在使用这个循环代码的迭代过程中遇到了这个空错误

Cursor c = dbHelper.retrieveAllData();

                c.moveToFirst();

                while(c.moveToNext())
                {
                    Log.d("dbcheck",Integer.toString(c.getPosition()));
                    //Log.d("dbcheck",c.getString(c.getColumnIndex("firstname")));
                    //Log.d("dbcheck",c.getString(c.getColumnIndex("lastname")));
                    **p.setFname(c.getString(c.getColumnIndex("firstname")));**
                    p.setMi(c.getString(c.getColumnIndex("middleinitial")));
                    p.setLname(c.getString(c.getColumnIndex("lastname")));
                    p.setAddr(c.getString(c.getColumnIndex("address")));
                    p.setAge(c.getInt(c.getColumnIndex("age")));
                    p.setMed_history(c.getString(c.getColumnIndex("med_history")));
                    p.setPat_status(c.getString(c.getColumnIndex("status")));
                    patientList.add(p);

                }

我在 p.setFname() 行上有一个空异常错误。我不知道它是如何变成空的,实际上我已经使用被注释掉的代码用 Log 显示了它。

4

2 回答 2

4

你试一试,

         Cursor c = dbconnection.rawQuery("SELECT * from Patients", null);
    if (c.getCount() > 0) {

        Patient p;

        while(c.moveToNext) {

            //initialize ur object to store new patient info.
            p = new Patient();
            p.setFname(c.getString(c.getColumnIndex("firstname")));

            //add newly created patient to ur list
            patientList.add(p);

        }
    }
c.close();
于 2012-07-29T06:35:58.597 回答
0

尝试这样做:

    // return all columns
    Cursor cursor = mDb.query(Patients, null, null, null, null, null, null);

    if ((cursor != null) && (cursor.getCount() > 0)) {
       while(cursor.moveToNext()){

    //Some code to put records per column in to a Patient Object 

    }
                    cursor.close();
   }
于 2012-07-29T06:36:32.573 回答