这是我的数据库类代码(DatabaseHelper.java)
public Cursor getAllData(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
return res;
}
这是另一个类(MainSuggestion.java)
public class MenuSuggestion extends AppCompatActivity {
DatabaseHelper myDb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu_suggestion);
<br/>
Cursor res = myDb.getAllData();
if (res.moveToFirst()) {
TextView bmi = (TextView) findViewById(R.id.textView9);
TextView kcal = (TextView) findViewById(R.id.textView10);
bmi.setText(res.getString(3));
kcal.setText(res.getString(4));
}
}
}
有人可以告诉我,我的代码有什么问题吗?
答案 0 :(得分:4)
这不起作用的确切原因是因为“myDb”在此行上为空。
Cursor res = myDb.getAllData();
但是,我建议你Running a Query with a CursorLoader。它可能看起来有点过分,在主线程上加载数据库中的东西可能会导致ANR错误。
答案 1 :(得分:0)
从数据库查询数据,你必须使用:
this.getReadableDatabase();
如果要在数据库中编写,更新,删除数据,请使用getWritableDatabase()
。