Android: onUpgrade Aufruf nicht auf der Datenbank-upgrade

Ich bin die Entwicklung der zweiten version meiner Bewerbung. In denen ich stehe vor einem problem.

In meiner Anwendung befindet sich die Datenbank in dem Ordner "assets". Jetzt will ich update meine Datenbank aus dem Ordner "assets" in der zweiten version.

Habe ich versucht, den code zu aktualisieren, wie :

// Data Base Version.
private static final int DATABASE_VERSION = 2;

Ich habe die version von 1 auf 2.

//Konstruktor

public DataBaseHelperClass(Context myContext) {     
    super(myContext, DATABASE_NAME, null ,DATABASE_VERSION);
    this.context = myContext;
    //The Android's default system path of your application database.
    DB_PATH = "/data/data/com.example.myapp/databases/";
}

//Create data base

public void createDataBase() throws IOException{
    //check if the database exists
    boolean databaseExist = checkDataBase();

    if(databaseExist){
        this.getWritableDatabase();
    }else{
        this.getReadableDatabase();
        try{
            copyDataBase();
        } catch (IOException e){
            throw new Error("Error copying database");
        }
    }// end if else dbExist
} // end createDataBase().

//Datenbank überprüfen

public boolean checkDataBase(){
    File databaseFile = new File(DB_PATH + DATABASE_NAME);
    return databaseFile.exists();        
}

//Datenbank kopieren von assets

private void copyDataBase() throws IOException{ 
    //Open your local db as the input stream
    InputStream myInput = context.getAssets().open(DATABASE_NAME); 
    // Path to the just created empty db
    String outFileName = DB_PATH + DATABASE_NAME; 
    //Open the empty db as the output stream
    OutputStream myOutput = new FileOutputStream(outFileName); 
    //transfer bytes from the input file to the output file
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer))>0){
        myOutput.write(buffer, 0, length);
    }

    //Close the streams
    myOutput.flush();
    myOutput.close();
    myInput.close(); 
}

//Datenbank öffnen

public void openDataBase() throws SQLException{      
    //Open the database
    String myPath = DB_PATH + DATABASE_NAME;
    sqliteDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);  
}

//Datenbank schließen

@Override
public synchronized void close() { 
    if(sqliteDataBase != null)
        sqliteDataBase.close(); 
    super.close(); 
}

@Override
public void onCreate(SQLiteDatabase db) {
    // No need to write the create table query.
    // As we are using Pre built data base.
    // Which is ReadOnly.
}

//Auf "Datenbank Aktualisieren".

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if(newVersion>oldVersion){
        context.deleteDatabase(DATABASE_NAME);
        try {
            copyDataBase();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {

    }
}

Aber das Problem ist, dass die Datenbank nicht aktualisiert wird, nach dem ausführen der apk in das Gerät.
Nun, was soll ich tun.

Meine Anwendungen erste version auf dem Markt ist. Weiß nicht, wie "Datenbank aktualisieren" in der zweiten version.

Bitte guide mich mit Ihren wertvollen Anregungen, ich bin in der Mitte meiner Anwendung, und ich bin nicht in der Lage, sich zu bewegen.

EDIT : onUpgrade nicht aufrufen. Als ich versuchte, zu drucken log-in 1. Linie in der onUpgrade aber es wird nicht gedruckt. Also das Problem ist, dass, onUpgrade nicht aufrufen.

InformationsquelleAutor Manoj Fegde | 2013-11-25
Schreibe einen Kommentar