代码之家  ›  专栏  ›  技术社区  ›  yoav.str

android sqlight-始终为空

  •  0
  • yoav.str  · 技术社区  · 14 年前

    每次我使用数据库时,它都是空的,我就是不知道。

    当我有一个查询时,我将此代码用于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;
            }
    
    }
    

    每当我调用这个类时(我持有一个初始化的类实例: mDbHelper = new GameSQLHelper(this); 如果这是一项活动)

    我总是将mdbhelper设置为空,如何更改它?这是我第一次在MySQL平台之外使用SQL,所以我有点让problems理解这个概念,而android记事本的例子对我没有帮助。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Rich Schuler    14 年前

    不通过打开数据库 SQLiteDatabase#openDatabase . 相反,创建 DatabaseHelper 并打电话 getWritableDatabase 关于它。