Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android SqliteAssetPer的NullPointerException_Java_Android_Sqlite - Fatal编程技术网

Java Android SqliteAssetPer的NullPointerException

Java 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);

在开发Android应用程序时,我使用。 问题是,在访问数据库时,我偶尔会在object
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()已负责打开数据库。