2011-11-20 31 views
5

Czy można zmienić nazwę bazy danych już utworzonej w systemie Android?Zmiana nazwy systemu Android Baza danych SQLite

W mojej aktualizacji aplikacji chciałbym zmienić nazwę starej bazy danych i zainstalować nową, a następnie porównać niektóre wartości i ostatecznie usunąć stare.

Robię tworzenie z pliku sqlite w folderze zasobów. Dlatego nie mogę zmienić nazwy wszystkich tabel i wstawić nowych.

Wyjaśnienie:

starej bazy danych będzie zawierać tylko jedną tabelę, że trzeba porównać wartości z przed nowym (z aktualizacją bazy danych).

Obie bazy danych zostały skopiowane z pliku sqlite w folderze assets.

Kiedy porównałem wartości ze starej bazy danych do nowej, usunę stare i użyję nowego w jego miejsce z wartościami, które porównałem.

To, co myślałem o zrobieniu, to zmienić nazwę starego na nową i zrobić wszystko powyżej.

+0

Dlaczego jesteś robić tak dużo rzeczy, jeśli chodzi o bezpośrednią aktualizację bazy danych w momencie aktualizacji aplikacji? – user370305

Odpowiedz

3

Pan Flash ma rację, należy usunąć stary db i skopiuj nowy ...

Zakładając użyć SQLiteOpenHelper, można użyć metody createDatabaseIfRequired(); w getReadableDatabase() i getWritableDatabase()

private boolean checkOldDatabase() { 
    Log.d(Constants.LOGTAG, "OperationDbHelper.checkDatabase"); 
    File f = new File(DB_PATH + OLD_DB_NAME); 
    return f.exists(); 
} 

public void createDatabaseIfRequired() throws IOException, SQLiteException { 
    if (!checkOldDatabase()) { 
     // do db comparison/delete old db/copy new db 
    } 
} 
0

Nie można bezpośrednio zmienić nazwy tabeli sql.

Ale możesz go skopiować, tworząc nowy i usuwając stary.

+0

Ach, brzmi idealnie, gdybyś mógł podać prostą próbkę lub link do czegoś użytecznego. Jedyną rzeczą, której potrzebuję, aby zrozumieć, to jak połączyć się z dwiema bazami danych jednocześnie, aby dokonać pewnych porównań. – Somk

7

Wystarczy zmienić nazwę pliku. Upewnij się, że baza danych jest najpierw zamknięta!

nazywają to w swojej klasie działalność:

private void renameDatabase() 
{ 
    File databaseFile = getDatabasePath("yourdb.whatever"); 
    File oldDatabaseFile = new File(databaseFile.getParentFile(), "yourdb_old.whatever"); 

    databaseFile.renameTo(oldDatabaseFile); 
} 

odpowiedź do wyjaśnienia. Zmień nazwę starego db (jak wyżej), skopiuj nowy z folderu zasobów, otwórz obie bazy danych i wykonaj porównanie. Następnie usuń stary plik.

+0

dlaczego miałbym zmienić nazwę pliku? Piszę bazę danych z pliku. Raz napisane, nigdy nie jest używane ponownie. – Somk

+1

Z twojego pytania: "Czy da się zmienić nazwę bazy danych już utworzonej w systemie Android?" To oznacza zasadniczo zmianę nazwy pliku. Co właściwie próbujesz zrobić? –

+0

Jeszcze raz "... Chciałbym zmienić nazwę starej bazy danych i zainstalować nową ...". Ciągle zdezorientowany. To zmienia nazwę pliku. Czy próbujesz skopiować nowy TABELA? Różne pytanie. –

Powiązane problemy