2012-12-03 30 views
0

我在sqlite的初學者,很抱歉,如果我做了一些愚蠢的錯誤:dsqlite的預定義的數據庫空

我在我的預定義的數據庫中的NULL錯誤:

NULL error

錯誤總是發生在我啓動我的應用程序在新電腦/模擬器,所以我認爲這與我的onCreate方法有關。但是,onCreate應該不需要,因爲我使用預定義的數據庫。

這是我的數據庫類:

private static String DATABASE_NAME = "ALGOLICIOUS_DB"; 
    private static int DATABASE_VERSION = 1; 
    private static String TABLE_NAME = "msQuiz"; 
    private static String TABLE_HIGHSCORE = "msHighScore"; 

    private Context context; 
    private SQLiteDatabase db; 
    String queryCreate, queryUpdate, queryDelete, querySelect, queryInsert; 
    Cursor cursor; 

    public AlgoliciousDB(Context context) { 
     this.context = context; 
     OpenHelper openHelper = new OpenHelper(this.context); 
     this.db = openHelper.getWritableDatabase(); 
    } 

    public List<String> getQuestion(int chapter) { 
     List<String> questionList = new ArrayList<String>(); 
     String result = ""; 
     querySelect = "SELECT * FROM " + TABLE_NAME + " WHERE question_chapter = " + chapter; 

     try { 
      cursor = this.db.rawQuery(querySelect, null); 

      for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()){ 
       result += cursor.getString(1) + "%" + cursor.getString(2) + "%" + cursor.getString(3) + "%" + cursor.getString(4) + "%" + cursor.getString(5); 
       questionList.add(result); 
       result = ""; 
      } 
      return questionList; 

     } catch (Exception e) { 
      return null; 
     } 
    } 

    public int getHighScore(int chapter) { 
     querySelect = "SELECT highscore FROM " + TABLE_HIGHSCORE + " WHERE highscore_id = " + chapter; 
     int temp = 0; 

     try { 
      cursor = this.db.rawQuery(querySelect, null); 

      for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()){ 
       temp = Integer.parseInt(cursor.getString(0)); 
      } 
      return temp; 

     } catch (Exception e) { 
      return -1; 
     } 
    } 

    public void Close() { 
     db.close(); 
    } 

    class OpenHelper extends SQLiteOpenHelper { 
     public OpenHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
      onCreate(db); 
     } 
    } 

任何幫助將不勝感激,謝謝:d

+1

你的數據庫存儲在哪裏? –

+0

在默認路徑(/ data/data)中:D 謝謝 –

+1

當你捕獲一個異常時,記錄它,不要簡單的返回一個默認值。這應該可以幫助你在onCreate中找到問題 – njzk2

回答