执行sqlite数据库操作时出现Java.lang.outofmemory错误

时间:2013-08-10 06:20:31

标签: android database sqlite out-of-memory

将数据存储到sqlite数据库后,我需要检索该数据并显示。 所以我确实喜欢这个。

private void display() {
        // TODO Auto-generated method stub
     try{
        cursor2=database.query("patienttestdetails", new String[]{"date","sugarlevel"}, "pid="+patientId+"", null, null, null, "ptdid desc", "2");
        if(cursor2.getCount()==0)
            Toast.makeText(BloodsugarActivity.this, "Add Your Bloodsugar Details To See Here", Toast.LENGTH_LONG).show();
        else
        {            
            while(cursor2.moveToFirst())
            {
                bloodsugardetails=new TextView(this);
                bloodsugardetails.setText(cursor2.getString(cursor2.getColumnIndex("date"))+"  "+cursor2.getString(cursor2.getColumnIndex("sugarlevel")));
                bloodsugardetails.setTextSize(20);
                bloodsugardetails.setBackgroundResource(R.drawable.gray_view);
                bloodsugardetails.setGravity(Gravity.FILL_HORIZONTAL);

                layout.addView(bloodsugardetails);
            }
        } 
        cursor2.close();
        database.close();
     }
     catch(Exception exception)
     {}
        }

我的日期基础查询是这样的:

   database.execSQL("create table if not exists patienttestdetails(ptdid integer primary key autoincrement,pid integer,date text,sugarlevel interger, FOREIGN KEY(pid) REFERENCES patientdetails(id))");

我的数据库插入很好我检查了数据库。但是在显示时,我收到Java.lang.outofmemory错误。我的应用程序有很多XML文件和大量的数据库操作。在此之前一切都很好,我不知道为什么我会收到这个错误?

Logcat详细信息:

https://docs.google.com/file/d/0B_c-SDSO63obZUdicVdDRWlKWXc/edit?usp=sharing

接受所有建议

谢谢

SHANKAR

1 个答案:

答案 0 :(得分:2)

你有一个无限循环。如果游标有记录(并且你的确有记录),Cursor.moveToFirst返回true。

http://developer.android.com/reference/android/database/Cursor.html

将其更改为moveToNext()

编辑:在旁注中,不建议在同一个线程(UI线程)中进行数据库访问和UI更新。