【问题标题】:on a null object reference in android project database [duplicate]在android项目数据库中的空对象引用上[重复]
【发布时间】:2017-09-22 11:31:58
【问题描述】:

我正在尝试使用此数据库方法获取我的应用程序中的所有数据库行:

 public class DatabaseHandler extends SQLiteOpenHelper {

private static final String ID = "_id";
private static final String unit_id = "unit_id";
private static final String unit_name = "unit_name";
private static final String unit_activity = "activity";
private static final String unit_phone1 = "phone1";
private static final String unit_phone2 = "phone2";
private static final String unit_address = "address";
private static final String unit_number = "number";
private static final String unit_picture_name = "picture_name";

private static final String DATABASE_NAME = "semnanieDB";
private static final String DATABASE_TABLE = "records";
private static final int DATABASE_VERSION = 1;

DatabaseHandler(Context context){super(context,DATABASE_NAME,null,DATABASE_VERSION);}

@Override
public void onCreate(SQLiteDatabase db) {

    String CREATE_TABLE = "CREATE TABLE " + DATABASE_TABLE + "(" + ID + " INTEGER PRIMARY KEY,"
            + unit_id + " TEXT," + unit_name + " TEXT," + unit_activity + " TEXT," + unit_phone1 + " TEXT," + unit_phone2 + " TEXT," +
            unit_address + " TEXT," + unit_number + " TEXT," + unit_picture_name + " TEXT)";
    db.execSQL(CREATE_TABLE);

}

public void onUpgrade(SQLiteDatabase db , int oldVersion , int newVersion){

    db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
    onCreate(db);

}
List<record> SearchRecord(String word){

    List<record> recordList = new ArrayList<>();
    SQLiteDatabase db = this.getReadableDatabase();
    String Select_Query = "SELECT * FROM " + DATABASE_TABLE;
    Cursor cursor = db.rawQuery(Select_Query,null);
    if(cursor.moveToFirst()){
        do {
            record record = new record();
            record.set_id(Integer.parseInt(cursor.getString(0)));
            record.set_record_id(cursor.getString(1));
            record.set_unit_name(cursor.getString(2));
            record.set_activity(cursor.getString(3));
            record.set_phone1(cursor.getString(4));
            record.set_phone2(cursor.getString(5));
            record.set_address(cursor.getString(6));
            record.set_unit_number(cursor.getString(7));
            record.set_picture(cursor.getString(8));
            recordList.add(record);

        }
        while (cursor.moveToNext());
    }
    return recordList;


}

但是当我使用SearchRecord 方法时得到这个错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{*/*showResultList}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List *.DatabaseHandler.SearchRecord()' on a null object reference

这是我的记录类

public class record {

public int _id;
public String record_id;
public String unit_name;
public String activity;
public String phone1;
public String phone2;
public String address;
public String unit_number;
public String picture;
record(){};

record(String record_id,String unit_name,String activity,String phone1,String phone2,String address,String unit_number,String picture){

    this.record_id = record_id;
    this.unit_name = unit_name;
    this.activity = activity;
    this.phone1 = phone1;
    this.phone2 = phone2;
    this.address = address;
    this.unit_number = unit_number;
    this.picture = picture;


}
record(int _id, String record_id,String unit_name,String activity,String phone1,String phone2,String address,String unit_number,String picture){

    this._id = _id;
    this.record_id = record_id;
    this.unit_name = unit_name;
    this.activity = activity;
    this.phone1 = phone1;
    this.phone2 = phone2;
    this.address = address;
    this.unit_number = unit_number;
    this.picture = picture;


}
public void set_id(int id){

    this._id = id;

}
public int get_id(){

    return this._id;
}
public void set_record_id(String id){

    this.record_id = id;

}
public String get_record_id(){

    return this.record_id;
}
public void set_unit_name(String unit_name){

    this.unit_name = unit_name;

}
public String get_unit_name(){

    return this.unit_name;
}
public void set_activity(String activity){

    this.activity = activity;

}
public String get_activity(){

    return this.activity;
}
public void set_phone1(String phone1){

    this.phone1 = phone1;

}
public String get_phone1(){

    return this.phone1;
}
public void set_phone2(String phone2){

    this.phone2 = phone2;

}
public String get_phone2(){

    return this.phone2;
}
public void set_address(String address){

    this.address = address;

}
public String get_address(){

    return this.address;
}
public void set_picture(String picture){

    this.picture = picture;

}
public String get_picture(){

    return this.picture;
}
public void set_unit_number(String unit_number){

    this.unit_number = unit_number;

}
public String get_unit_number(){

    return this.unit_number;
}





}

【问题讨论】:

标签: android sqlite


【解决方案1】:

你应该在你的活动中像这样调用SearchRecord()

DatabaseHandler databaseHandler = new DatabaseHandler(this);
List<record> records = databaseHandler.SearchRecord();

【讨论】:

    猜你喜欢
    • 2018-12-31
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2016-12-21
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多