2013-01-04 5 views
1

Android 응용 프로그램 개발시 Android SQLiteAssetHelper을 사용합니다. 문제는 그 나는 개체에서 개체 NullPointerExceptionDBQueryNullPointerException with Android SQLiteAssetHelper

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 클래스. 데이터베이스가 위치를 먼저 데이터베이스를 열 필요가

+1

getFDay (int year) 실행 전에 데이터베이스가 열려 있어야합니다. –

+0

database = getReadableDatabase();로 db를 엽니 다. – bloodvlad

답변

0

추가 데이터베이스 이름. 오직 당신 만이 그 작업을 수행 할 수 있습니다.

+0

데이터베이스는 정상적으로 생성되었지만 안정적이지는 않습니다. DBQuery가 null 인 경우가 종종 있습니다. – bloodvlad

-1

을 만들거나하지

private static final String DATABASE_NAME = "Test"; 

data/data/YOUR_APP_PACKAGE_NAME 것을이 & 검사처럼

+0

SQLiteAssetHelper.getReadableDatabase()는 이미 데이터베이스 열기를 처리합니다. – Suragch

관련 문제