使用Android SQLiteAssetHelper的NullPointerException

时间:2013-01-04 08:41:31

标签: java android sqlite

在开发Android应用程序时,我使用Android SQLiteAssetHelper。 问题是,在访问数据库时偶尔会遇到对象NullPointerException中对象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: 对不起,null对象是DBQuery类中的'database'。

2 个答案:

答案 0 :(得分:0)

添加数据库名称就像这样&检查数据库是否创建

 private static final String DATABASE_NAME = "Test";

data/data/YOUR_APP_PACKAGE_NAME位置

答案 1 :(得分:-1)

您必须先打开数据库。不仅仅是你可以对它进行操作。