在尝试从数据库中检索数据时,我的数据库具有值,并且我不知道是哪个导致此错误。
public void popList(String date, String time, String type, String game, String place){
Cursor data = databaseHelper.getReports(date, time, type, game, place);
while (data.moveToNext()) {
HashMap<String, String> datax = new HashMap<>();
datax.put("id", (data.getString(data.getColumnIndex("betid"))));
datax.put("betnumber", (data.getString(data.getColumnIndex("betnum"))));
datax.put("betamount", (data.getString(data.getColumnIndex("betamt"))));
mData3.add(datax);
}
bettorAdapter = new MyAdapter(mData3);
listViewx.setAdapter(bettorAdapter);
bettorAdapter.notifyDataSetChanged();
}
public Cursor getReports(String date, String time, String type, String game, String place){
Cursor data=null;
try {
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT * FROM reports WHERE date='"+date+"' AND time ='"+time+"' AND game='"+game+"' AND type='"+type+"' AND lugar='"+place+"'";
data = db.rawQuery(query,null);
}catch (Exception e){
System.out.println(e);
}
return data;
}
答案 0 :(得分:1)
您需要实例化/构造 databaseHelper 对象,因为如果仅声明该对象,该对象将为 null 。那就是您需要使用等效的行:-
databaseHelper = new DatabaseHelper(appropriate_values_for the_constructor);
appropriate_values_for the_constructor
表示构造函数的适当值(通常是上下文)。
以上将在调用 poplist 方法之前使用。通常, databaseHelper 将在类级别上声明,并且在上下文可用时或之后不久设置上一行。在活动中,可能会在设置ContentView之后使用 onCreate 方法。
以下是一个示例,其中databaseHelper名为mDBHlpr,而构造函数只需要传递一个值即可,即有效的Context(例如,对于活动 this )。 :-
public class MainActivity extends AppCompatActivity {
DatabaseHelper mDBHlpr; //<<<<<<<<<< Declares the mDBHlpr instance, it will be null until instantiated
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDBHlpr = new DatabaseHelper(this); //<<<<<<<<<<< Instantiates the Database Helper instance named mDBHlpr
.......... other code
}
.......... other code
}