Skip to content Skip to sidebar Skip to footer

Sqliteopenhelper "oncreate" Is Not Called? (the Db Does Not Exist)

From a fragment I instantiate this way fmdata = new FileManagerData(getActivity()); the following class. I don't understand why onCreate() is not called and my database does not g

Solution 1:

The onCreate method will be called after first access to the DB. Make a query to the DB and onCreate will be invoked.

Solution 2:

Probably the database exists from an earlier try.

Uninstall your app and try again.

Solution 3:

You should put in onCreate this:

sqLiteDatabase.execSQL("create table" + DB_NAME + " ( _id integer primary key autoincrement, " + fieldOne + "INTEGER, " + fieldTwo + "INTEGER);");

Where fieldOne and fieldTwo are names of your table's columns. Also look here: http://www.sqlite.org/datatype3.html

Solution 4:

I know that this thread has already accepted answer. Neverthless this is what i have to add:

i have:

protectedclassOpenHelperextendsSQLiteOpenHelper {

    @OverridepublicvoidonCreate(SQLiteDatabase db) {
        try {
             MHSqlDb.this.createTables(db);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

I'm calling this:

iOpenHelper = new OpenHelper(iDbFileName, DATABASE_VERSION );

The databese file doesn't exist at this stage.

Then i do some debugging of the app. i never call

    iOpenHelper.getReadableDatabase();

neither i call

    iOpenHelper.getWritableDatabase();

the database file still does not exist. Now when i kill the app from debugger i can suddenly see database file (with the name in iDbFileName) created. The onCreate method of the OpenHelper is never called.

So while i agree that the intention of onCreate method seems to be to get called when the database file doesn't exist and either getReadableDatabase() or getWritableDatabase() is called, this is apparently not always the case.

Solution 5:

Uninstalling the app will remove the db, and thus will call onCreate on next run.

Post a Comment for "Sqliteopenhelper "oncreate" Is Not Called? (the Db Does Not Exist)"