将数据存储到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
答案 0 :(得分:2)
你有一个无限循环。如果游标有记录(并且你的确有记录),Cursor.moveToFirst返回true。
http://developer.android.com/reference/android/database/Cursor.html
将其更改为moveToNext()
编辑:在旁注中,不建议在同一个线程(UI线程)中进行数据库访问和UI更新。