2013-01-04 77 views
1

在Android應用程序的開發中,我使用Android SQLiteAssetHelper。 問題是,偶爾在訪問數據庫中,我得到一個錯誤的對象NullPointerException的對象DBQueryNullPointerException與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

我打開數據庫與數據庫= getReadableDatabase(); – bloodvlad

回答

0

添加數據庫名稱,比如這個&檢查該數據庫是創建和不

private static final String DATABASE_NAME = "Test"; 

data/data/YOUR_APP_PACKAGE_NAME位置

+0

數據庫是正常創建的,但與它一起工作並不穩定,通常是DBQuery對象爲空。 – bloodvlad

-1

你必須先打開數據庫。只有你可以對此進行操作。

+0

SQLiteAssetHelper.getReadableDatabase()已經負責打開數據庫。 – Suragch

相關問題