2011-06-21 15 views
6

Jak szybko sprawdzić, czy baza danych istnieje w systemie Android?Android - czy istnieje baza danych SQLite?

(nie Tabela - cała baza danych)

+0

Proszę sprawdzić [ten dokument] [1] .. Może ci się przydać. [1]: http: //www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ – Nikhil

+0

Jest to bardzo częsty problem. Proszę sprawdzić poniższy link. Myślę, że to ci pomoże. http://www.itsalif.info/content/check-if-database-exist-android-sqlite3openv2-failed –

Odpowiedz

5

Otwórz bazę danych i złapać SQLitException który zostanie rzucony w przypadku, gdy baza danych nie istnieje. Należy pamiętać, że nie należy wywoływać metody openOrCreateDatabase(). Zobacz ten post dla szczegółów; Query if Android database exists!

2

Moim sposobem sprawdzenia, czy istnieje baza danych, jest otwarcie uchwytu pliku i sprawdzenie, czy plik istnieje. z mojego doświadczenia przy użyciu funkcji "openOrCreateDatabase()" nie spowoduje błąd, jeśli db nie istnieje. spójrz na nazwę "Otwórz OR Utwórz bazę danych". oznacza to, że jeśli nie ma otwartego systemu db, to po prostu stworzysz nowy, więc bez względu na to, czy istnieje, zanim pojawi się jeden. Myślę, że jedyny raz, kiedy dostaniesz błąd, jest to, że nie może tego zrobić. z tego, co powiedział facet, że nie wierzę w to, co próbują przetestować, myślę, że chciał, aby jego program wiedział, czy db był już tam przed ręką, a nie automatycznie tworzyć puste, jeśli nie było . Ponieważ wszystkie db są przechowywane jako pliki, pierwszym parametrem w tym poleceniu open database jest nazwa pliku. Więc myślę, że najlepszą opcją jest sprawdzenie, czy plik db istnieje tak:

File dbtest = new File("/data/data/yourpackagename/databases/dbfilename"); 

//If you have Context, you could get the Database file using the following syntax 
//File dbtest = getApplicationContext().getDatabasePath("dbfilename.db"); 


if(dbtest.exists()) 
{ 
    // what to do if it does exist  
} 
else 
{ 
    // what to do if it doesn't exist 
} 
+0

musi być: if (dbtest.exist()) ... Twoja logika nie jest poprawna –

+0

dobry połów, I to naprawiłem. –

Powiązane problemy