Я хочу создать базу данных, используя SQLiteOpenHelper, но я столкнулся с некоторыми проблемами - PullRequest
1 голос
/ 17 января 2012

Я создал подкласс (DatabaseHelper) класса SQLiteOpenHelper. У него есть конструктор и два переопределенных метода

 public DatabaseHelper(Context context) {
            super(context, dbName, null,33);
            // TODO Auto-generated constructor stub
        }
public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE "+ quizTable +"("+quizCol1+" INTEGER PRIMARY KEY,"+
                quizCol2+" TEXT,"+ quizCol3 +" TEXT,"+ quizCol4 +" INTEGER," + quizCol5 + " DATETIME )");

        db.execSQL("CREATE TABLE "+ questionTable +"("+questionCol1+" INTEGER PRIMARY KEY,"+
                questionCol2+" INTEGER,"+ questionCol3 +" TEXT,"+ questionCol4 +" TEXT," + questionCol5 + " TEXT," +
                questionCol6 + " TEXT," + questionCol7 +" TEXT," + questionCol8 +" TEXT)");

        db.execSQL("CREATE TABLE "+ playedQuizzes +"("+playedQuizCol1+" INTEGER PRIMARY KEY,"+
                playedQuizCol2+" TEXT,"+ playedQuizCol3 +" TEXT,"+ playedQuizCol4 +" TEXT," +
                playedQuizCol5 + " TEXT)");
        System.out.println("this is onCreate method");
        InsertQuiz();
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS "+questionTable);
        db.execSQL("DROP TABLE IF EXISTS "+playedQuizzes);

        onCreate(db);
    }

В моем подклассе Activity я вызвал конструктор вышеупомянутого класса, используя

 public void onStart(){
        try{
            super.onStart();
             dbHelper = new DatabaseHelper(this);
        }catch(Exception ex){
            CatchError(ex.toString());
        }       
    }

Но когда я запускаю свой класс Activity и открываю свою перспективу DDMS, я не могу найти базу данных, созданную в / data / data /

Что-то не так с моим знанием или моим кодом?Если да, пожалуйста, скажите мне.

Ответы [ 2 ]

1 голос
/ 17 января 2012

В вашем коде вы не открыли базу данных ....

для создания, записи или открытия базы данных getWritableDatabase()

или для создания и открытия базы данных getReadableDatabase() isnecessory .....

0 голосов
/ 17 января 2012

Из документации SQLiteOpenHelper класс:

Создание вспомогательного объекта для создания, открытия и / или управления базой данных. это Метод всегда возвращается очень быстро. База данных на самом деле не создан или открыт до тех пор, пока один из getWritableDatabase () или getReadableDatabase () вызывается.

Таким образом, база данных не создается до тех пор, пока не будут вызваны getWritableDatabase () или getReadableDatabase ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...