简而言之,这是我的班级
public class sqlite extends SQLiteOpenHelper{
public SQLiteDatabase db;
public sqlite(Context context , String db_name , int db_version){
super(context, db_name, null, db_version, null);
try{this.db=getWritableDatabase();}catch(Exception e){this.db=getReadableDatabase();}
}
当我调用新的sqlite(*****);
时,函数getWritableDatabase()
和getReadableDatabase()
总是会导致错误(对空引用引用时出现NullPointerException)所以我必须调用哪些正确的引用才能实现这些功能成功吗?
编辑:我找到了一个解决方案,但我还是觉得为什么以上代码不起作用? 解决方法是从sqlite(扩展SQLiteOpenHelper)构造函数中删除getWritableDatabase()到它自己的操作方法,即:直接在CRUD方法之前, 我不知道如果从构造函数调用它失败的原因
答案 0 :(得分:1)
您需要从构造函数中删除对getWritableDatabase
的调用。相反,只要你想使用数据库助手,你就可以简单地调用你的sqlite
类的实例(我强烈建议你按照适当的Java类命名约定重命名为有意义的东西)。
//Here is an example (using this from an Activity or some other class):
//pass appropriate values for the arguments...
sqlite myDatabaseHelper = new sqlite(context, db_name, db_version);
//here you can get the writable-database object
SQLiteDatabase sqlDB = myDatabaseHelper.getWritableDatabase();
//from here you can perform your database operations - like querying/inserting values, etc