Java Android SqliteAssetPer的NullPointerException
在开发Android应用程序时,我使用。 问题是,在访问数据库时,我偶尔会在objectJava Android SqliteAssetPer的NullPointerException,java,android,sqlite,Java,Android,Sqlite,在开发Android应用程序时,我使用。 问题是,在访问数据库时,我偶尔会在objectDBQuery public class DBQuery extends MyDatabase { private static MyDatabase dataBaseHelper; public DBQuery(Context context) { super(context); dataBaseHelper = new MyDatabase(context);
DBQuery
public class DBQuery extends MyDatabase {
private static MyDatabase dataBaseHelper;
public DBQuery(Context context) {
super(context);
dataBaseHelper = new MyDatabase(context);
}
public static void closed() {
dataBaseHelper.close();
}
public static int getFDay(int year) {
Cursor cursor = database.rawQuery("SELECT offset FROM china_years WHERE year = ?",
new String[] { Integer.toString(year) });
cursor.moveToFirst();
String yearS;
try {
yearS = cursor.getString(0);
} catch (Exception e) {
yearS = "0";
e.printStackTrace();
}
cursor.close();
return Integer.parseInt(yearS);
}
/* other queries... */
}
MyDatabase类:
public class MyDatabase extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "db.sqlite";
private static final int DATABASE_VERSION = 2;
public static SQLiteDatabase database;
public MyDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
database = getReadableDatabase();
}
}
UDP:
很抱歉,DBQuery类中的空对象是“数据库”。像这样添加数据库名称&检查数据库是否已创建
private static final String DATABASE_NAME = "Test";
data/data/YOUR_APP\u PACKAGE\u NAME
Location您必须先打开数据库。而不仅仅是您可以对其执行操作。在执行getFDay(int year)之前打开数据库;我用database=getReadableDatabase()打开数据库;数据库是正常创建的,但使用它并不稳定,这通常是因为对象DBQuery为null。SQLiteAssetHelper.getReadableDatabase()已负责打开数据库。