数据库游标上的空对象引用

时间:2019-07-24 07:56:11

标签: android nullpointerexception android-sqlite

在尝试从数据库中检索数据时,我的数据库具有值,并且我不知道是哪个导致此错误。

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;
}

1 个答案:

答案 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
}