尝试从 SQLite 数据库中获取数据时,数据库助手空对象引用,没有这样的表:Offices(代码 1)

哟阿克

我正在使用 Android 库 SQLiteAssetHelper 读取 Sqlite 数据库文件,并从 SQLite 数据库填充我的 RecycleryView ...

这是我的数据库助手:

public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "db.sql";
private static final int DATABASE_VERSION = 1;
private static final String ID="ID";
private static final String NAME="Name";
private static final String IMAGE="Img";
private static final String Location="Location";
private static final String Offices_Table="Offices";



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

public ArrayList<Office> GetOffices(){
    SQLiteDatabase sqLiteDatabase=getWritableDatabase();
    String[] columns={DBHelper.ID,DBHelper.NAME,DBHelper.IMAGE,DBHelper.Location};
    Cursor cursor=sqLiteDatabase.query(DBHelper.Offices_Table, columns, null, null, null, null, null);
    ArrayList<Office> offices = new ArrayList<>();

    while(cursor.moveToNext()){
        Office office=new Office();
        office.officeID=cursor.getInt(cursor.getColumnIndex(DBHelper.ID));
        office.officeName=cursor.getString(cursor.getColumnIndex(DBHelper.NAME));

        office.officeLocation=cursor.getString(cursor.getColumnIndex(DBHelper.Location));
        offices.add(office);
    }
    return offices;
}

@Override
public void onCreate(SQLiteDatabase db) {}

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

这是我的 POJO 类 Office.java :

public class Office {

public int officeID;
public String officeName;
public   int officeImg;
public String officeInfo;
public int officeRate;
public String officeLocation;

public Office(String officeName, int officeImg , String officeLocation) {
    this.officeName = officeName;
    this.officeImg = officeImg;
    this.officeLocation=officeLocation;
}

public Office() {
}

public Office(int officeID, String officeName, int officeImg, String officeInfo, int officeRate, String officeLocation) {
    this.officeID = officeID;
    this.officeName = officeName;
    this.officeImg = officeImg;
    this.officeInfo = officeInfo;

    this.officeRate = officeRate;
    this.officeLocation = officeLocation;
}

public void setOfficeID(int officeID) {
    this.officeID = officeID;
}

public void setOfficeName(String officeName) {
    this.officeName = officeName;
}

public void setOfficeImg(int officeImg) {
    this.officeImg = officeImg;
}

public void setOfficeInfo(String officeInfo) {
    this.officeInfo = officeInfo;
}

public void setOfficeRate(int officeRate) {
    this.officeRate = officeRate;
}

public void setOfficeLocation(String officeLocation) {
    this.officeLocation = officeLocation;
}

public int getOfficeID() {
    return officeID;
}

public String getOfficeName() {
    return officeName;
}

public int getOfficeImg() {
    return officeImg;
}

public String getOfficeInfo() {
    return officeInfo;
}

public int getOfficeRate() {
    return officeRate;
}

public String getOfficeLocation() {
    return officeLocation;
}}

初始化DatabaseHelper 文件并将sqlite 数据库文件中的数据加载到OfficesActivity.java 文件中的Application

public class Offices extends AppCompatActivity {

RecyclerView recyclerView ;
OfficeAdapter officeAdapter;
List<Office> officeDataList;
List<Integer> officesImg;
DBHelper dbHelper;
Cursor cursor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_offices);

    recyclerView = (RecyclerView) findViewById(R.id.recyclerview_paths);
    officeDataList = dbHelper.GetOffices();
    officeAdapter = new OfficeAdapter(this , officeDataList);
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setAdapter(officeAdapter);

}}

跟踪日志:

                                                                                        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.artline.ministryoftourismpalestine/com.artline.ministryoftourismpalestine.Offices}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.ArrayList com.artline.ministryoftourismpalestine.DBHelper.GetOffices()' on a null object reference

从跟踪中我知道 Office 类属性为空并且 OfficeAdapter 为空列表,但是我该如何解决问题?原因是什么?

问题解决了,感谢VSB ..

但是我收到错误说没有这样的桌子..

日志错误:

                                                                                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.artline.ministryoftourismpalestine/com.artline.ministryoftourismpalestine.Offices}: android.database.sqlite.SQLiteException: no such table: Offices (code 1): , while compiling: SELECT ID, Name, Img, Location FROM Offices
VSB

你错过了初始化你的 DBHelper。

public class Offices extends AppCompatActivity {
...
DBHelper dbHelper = new DBHelper (this);

....
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档