getWritableDatabase()从来没有被称为
问题描述:
简单地说,这是我的课getWritableDatabase()从来没有被称为
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异常的空对象引用),所以什么是正确的引用我必须打电话来成功执行这些功能?
编辑:我发现了一个解决方案,但仍IAM为什么wounder上面的代码不能正常工作? 的解决方案是从源码除去getWritableDatabase()(扩展SQLiteOpenHelper)构造函数的操作方法它的自我,即:直接之前的CRUD方法, 我不知道失败的原因,如果从构造称为
答
您需要从构造函数中删除对的调用。相反,只要你想使用数据库帮助程序,你可以简单地调用你的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
+0
我想要在构造函数内或类sqlite本身中调用getWritableDatabase(),即用户不必自己调用此函数 在构造函数中调用getWritableDatabase()会出现什么问题 –
你在哪里使用'db'变量?我认为最好首先实例化你的'sqlite'(为什么是一个类的小写名字?)对象,然后使用它的引用来获得WritableDatabase。 – ishmaelMakitla
@Sherif Eldeeb为什么你想要它在构造函数中调用?从你从哪里获取数据库表,从资产或代码?以便我可以为您提供相同的解决方案。 – Nisarg
@Nisarg来自SyncAdaptor类 –