从未调用过getWritableDatabase()

时间:2016-09-17 12:06:07

标签: android android-studio

简而言之,这是我的班级

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方法之前, 我不知道如果从构造函数调用它失败的原因

1 个答案:

答案 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