2011-06-21 11 views

Odpowiedz

4

W metodzie SQLiteOpenHelper onCreate() można po prostu użyć db.execSQL(...), ale to zależy od tego, jak zbudowany jest "plik tekstowy" (i jak duży jest).

Alternatywnie, można „statek” db SQLite z aplikacją - patrz link, aby dać Ci kilka pomysłów ...

Using your own SQLite database in Android applications

+0

Czy istnieje jakiś sposób, aby uzyskać to '/ data/data/YOUR_PACKAGE/Bazy /' ścieżka, bez konieczności jej kodowania? – rid

+1

@Radu: Wypróbuj http://developer.android.com/reference/android/content/Context.html#getDatabasePath dla 'getDatabasePath (...)' – Squonk

5

Musiałem rozwiązać ten sam problem. Nie można znaleźć bezpośredniego sposobu, aby to zrobić, więc umieściłem plik w katalogu res/raw i użyłem openRawResource, aby uzyskać na nim InputStream. Następnie czytałem linie, aż jedna zakończyła się ;. Następnie przekazałem instrukcję do bazy danych sqlite.

Mam nadzieję, że ktoś inny przedstawi lepszy sposób, ale pomyślałem, że po prostu dodam sposób, w jaki to zrobiłem.

0

Problem z importem własnego pliku sqlite db to ty musisz upewnić się, że wersja silnika, w której utworzyłeś plik, pasuje do wersji silnika na urządzeniu z Androidem, do którego jest instalowana baza danych. uruchamiając skrypt SQL, upewniając się, że baza danych jest tworzona przy użyciu silnika faktycznie zainstalowanego na urządzeniu z systemem Android.

4

Podążając za odpowiedzią Steve'a Prentice'a. To moja realizacja:

plik mydb.sql w res/raw

CREATE TABLE table1(col1 INTEGER PRIMARY KEY, col2 TEXT); 
CREATE TABLE table2(col1 INTEGER PRIMARY KEY, col2 TEXT, col3 INTEGER); 

MyClass.java

InputStream inputStream = context.getResources().openRawResource(R.raw.mydb); 

    String queries = ""; 
    try { 
     queries = IOUtils.toString(inputStream); 
    } catch (IOException e) { 
     Util.logException(e); 
    } 

    for (String query : queries.split(";")) { 
     db.execSQL(query); 
    } 
Powiązane problemy