java - 调用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();
解决方案
您可以像这样在数据库类中初始化数据库对象:
public void createDB()
{
DatabaseHelper databaseHelper = new DatabaseHelper(context);
SQLiteDatabase database = databaseHelper.getWritableDatabase();
}
然后像这样在片段内部调用这个函数
DBclass classobject = new DBclass(getActivity());
classobject.createDB();
我希望你的错误会消失:)
推荐阅读
- java - 缺少访问 Raspberry Pi3 B+ 上输入设备的权限
- csv - 使用批处理文件从 csv 中删除具有字段中特定数据的行
- javascript - 如何在文档已经加载后将 JavaScript 添加到页面?
- ios - 离开标签栏视图控制器时如何删除标签栏?
- vuejs2 - VeeValidate 范围验证不起作用
- python - 将 aiohttp 与多处理相结合
- json - JSON模板失败,循环中的活动部署
- regex - 模块解析失败:严格模式下的八进制文字,可以使用正则表达式而不使用构造函数
- python - Sorting dictionary values in a ascending order a python counter
- mask - 如何在 Photoshop 脚本中抑制弹出消息“未选择像素”。