0

将数据存储到 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 文件和很多数据库操作。在此之前一切都很好,我不知道为什么我会收到这个错误?

日志详细信息:

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

接受所有建议

谢谢

香卡

4

1 回答 1

2

你在那里有一个无限循环。如果 cursor 有记录(你的显然有),则 Cursor.moveToFirst 返回 true。

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

将其更改为 moveToNext()

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

于 2013-08-10T06:36:47.687 回答