首页 > 解决方案 > 调用android SQLite数据库失败

问题描述

我有一个使用 SQLite 数据库的应用程序,但在一半的 android 设备上,调用它时出现问题,我收到此错误。虽然我正在使用这些行:

        DatabaseHelper databaseHelper = new DatabaseHelper(getActivity());
        SQLiteDatabase database = databaseHelper.getWritableDatabase();
        databaseHelper.onCreate(database);

启动我的数据库的代码,仍然,我得到了这个错误:

Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference`.

如果你能帮助我解决这个问题,我会很高兴。


以下代码适用于我的 Database Helper 类:` public class DatabaseHelper extends SQLiteOpenHelper {

public DatabaseHelper(Context context) {
    super(context, "foods_database.db", null, 2);
}

@Override
public void onCreate(SQLiteDatabase db) {

    db.execSQL("create table if not exists foods(sFoodName text, sUniteIndex text)");

}

public void deleteFoodsTable(SQLiteDatabase database){
    database.execSQL("drop table if exists foods");
}

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

}`

这些代码行用于启动数据库助手并将项目添加到数据库:

                DatabaseHelper databaseHelper = new DatabaseHelper(getActivity());
                SQLiteDatabase database = databaseHelper.getWritableDatabase();
                databaseHelper.onCreate(database);

                ContentValues values = new ContentValues();

                for (int i = 0; i < foodsList.size() ; i++){
                    values.put("sFoodName" , foodsList.get(i).getFoodName());
                    values.put("sUniteIndex" , TextUtils.join("," , foodsList.get(i).getUnitesIndexArray()));

                    database.insert("foods" , null , values);

                }

                database.close();

标签: javaandroidsqliteandroid-sqlitesqliteopenhelper

解决方案


您可以像这样在数据库类中初始化数据库对象:

public void createDB()
{
  DatabaseHelper databaseHelper = new DatabaseHelper(context);
    SQLiteDatabase database = databaseHelper.getWritableDatabase();
}

然后像这样在片段内部调用这个函数

DBclass classobject = new DBclass(getActivity());
classobject.createDB();

我希望你的错误会消失:)


推荐阅读