2010-06-18 6 views
0

Chaque fois que j'utilise le db son null et je ne comprends pas.Android sqlight - toujours null

-je utiliser ce code pour SQL quand j'ai une requête:

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; 
     } 

} 

Chaque fois que j'appelle cette classe (je tiens un instace de celui-ci initialisé: mDbHelper = new GameSQLHelper(this); lorsque cela est une activité)

I toujours obtenir mon mDbHelper comme nul comment puis-je le changer? C'est la première fois que je travaille avec SQL en dehors de la plate-forme mysql, donc je suis en train d'avoir des problèmes pour comprendre le concept, et l'exemple du bloc-notes android ne m'a pas aidé.

Répondre

0

N'ouvrez pas la base de données via SQLiteDatabase#openDatabase. Au lieu de cela, créez une instance de votre DatabaseHelper et appelez le getWritableDatabase dessus.

+0

pouvez-vous s'il vous plaît montrer un petit exemple expliquant ce qui précède. thanx –

+0

quelqu'un peut s'il vous plaît me montrer un exemple? –