2010-06-18 73 views
0

每次我使用數據庫其空,我只是不明白。Android的sqlight - 始終爲空

我使用的SQL此代碼時,我有一個查詢:

public class GameSQLHelper { 
    static final String[] COUNTRIES = new String[] { 
     "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra" 
     }; 

    private static final String DB_PATH = "/countryCityGame/databases/"; 
    private static final String DATABASE_NAME = "events.db"; 
    private static final int DATABASE_VERSION = 1; 
    private final Context mCtx; 
    // Table name 
    public static final String TABLE = "myDataBase"; 

    // Columns 
    public static final String LETTER = "letter"; 
    public static final String TYPE = "type"; 
    public static final String VALUE = "value"; 

    //my database 
    SQLiteDatabase myDataBase; 

    private static class DatabaseHelper extends SQLiteOpenHelper { 
     private static final String TAG = null; 

     DatabaseHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
       String sql = "create table " + TABLE + "(" + BaseColumns._ID 
       + " integer primary key autoincrement, " + LETTER + " text not null, " 
       + TYPE + " text not null," + VALUE + " text not null);"; 
       Log.d("EventsData", "onCreate: " + sql); 
       db.execSQL(sql); 
       insertValuesToDB(db); 

      } 
      private void insertValuesToDB(SQLiteDatabase db) { 


       if (db == null){ 

       } 
       else{ 
       db.execSQL("INSERT INTO " 

               + TABLE 

               + " ("+LETTER+","+ TYPE +"," + VALUE +")" 

               + " VALUES ('A', 'country', 'Angola');"); 

        ContentValues initialValues = new ContentValues(); 


        for (int i = 0 ; i < COUNTRIES.length ; i++){ 

         Character tmp = (Character)COUNTRIES[i].charAt(0); 

         initialValues.put(VALUE, COUNTRIES[i]); 
         initialValues.put(TYPE, "country"); 
         initialValues.put(LETTER,tmp.toString(tmp)); 

        db.insert(TABLE, null, initialValues); 
        } 
       } 
      } 
      @Override 
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
       Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
         + newVersion + ", which will destroy all old data"); 
       db.execSQL("DROP TABLE IF EXISTS notes"); 
       onCreate(db); 
      } 

     } 

     /** 
     * Constructor - takes the context to allow the database to be 
     * opened/created 
     * 
     * @param ctx the Context within which to work 
     */ 
     public GameSQLHelper(Context ctx) { 
      this.mCtx = ctx; 
     } 





     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     if (oldVersion >= newVersion) 
      return; 

     String sql = null; 
     if (oldVersion == 1) 
      sql = "alter table " + TABLE + " add note text;"; 
     if (oldVersion == 2) 
      sql = ""; 

     Log.d("EventsData", "onUpgrade : " + sql); 
     if (sql != null) 
      db.execSQL(sql); 
    } 

    public void openDataBase() throws SQLException{ 

      //Open the database 
      String myPath = DB_PATH + DATABASE_NAME; 
      myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); 

     } 


     public boolean existInDataBase(String serchStr){ 

      Cursor c = null ; 
      try{ 
      openDataBase(); 
      c = myDataBase.query(true, TABLE, new String[] {TYPE 
        }, VALUE + "=" + serchStr, null, 
        null, null, null, null); 
      } 
      catch(Exception e){ 
       Log.d("sqlExacption", e.getMessage()); 

      } 
      if (c == null) 
       return false; 

      return true; 
     } 

} 

每當我調用這個類(我認爲初始化它的一個instace:mDbHelper = new GameSQLHelper(this);其中,這是一個活動)

我總是讓我的mDbHelper爲null,我該如何改變它?這是我第一次使用mysql平臺以外的SQL工作,所以我有點理解這個概念,而android記事本的例子並沒有幫助我。

回答

0

請勿通過SQLiteDatabase#openDatabase打開數據庫。相反,請創建DatabaseHelper的實例並在其上調用​​。

+0

請問您能否給出一個解釋上述的例子。 thanx – 2010-06-18 16:57:10

+0

有人可以給我看一個例子嗎? – 2010-06-19 21:08:02