我在外部驱动器中使用Singleton Approach创建了一个数据库,当我为DatabaseHelper创建了一个访问某些方法的对象(例如checkMISSetting)时,我遇到了一个问题。
我还附上了我的代码段:
我在创建数据库的处理程序类:
em++ reset_if_true.cpp -O3 -std=c++14 -o reset_if_true.js
node reset_if_true.js
调用处理程序方法
private DatabaseHandler(Context context) {
super(context, context.getExternalFilesDir(null).getAbsolutePath()
+ "/" + "Android/MobInvSuit" + "/" + DATABASE_NAME, null,
DATABASE_VERSION);
}
public static synchronized DatabaseHandler getInstance(Context context) {
if (sInstance == null) {
sInstance = new DatabaseHandler(context.getApplicationContext());
}
return sInstance;
}
我收到错误的方法
DatabaseHandler handler=DatabaseHandler.getInstance(this);
boolean check = handler.checkMISSetting();//Line number 129
handler.close();
在这个方法中,我在执行getIadableDatabase()时遇到问题,我在这里附上:
public boolean checkMISSetting() {
boolean flag = false;
SQLiteDatabase db = getReadableDatabase();
String q = "SELECT COUNT(*) FROM " + DatabaseHandler.TABLE_SETTINGS;
int numRows = (int) DatabaseUtils.longForQuery(db, q, null);
if (numRows > 0) {
flag = true;
return flag;
} else {
return flag;
}
}
答案 0 :(得分:2)
试试这个
替换constructor
班级DatabaseHandler
private DatabaseHandler(Context context) {
super(context,Environment.getExternalStorageDirectory()+ "/" + "Android/MobInvSuit" + "/" + DATABASE_NAME, null,DATABASE_VERSION);
}