Skocz do zawartości
TheShalony

sqlite Jak dołączyć lokalną bazę danych do Androida

    Rekomendowane odpowiedzi

    Cześć! 
    Tworzę aplikację (zwykły Quiz). Dostajesz pytania, zdobywasz punkty, a na koniec wyświetla ci się ile punktów zdobyłeś itp. Pytań ma być dość sporo, więc kodowanie ich na sztywno w XML to katorga. Postanowiłem skorzystać z bazy danych SQLite. Przerobiłem jakieś poradniki jak się to tworzy SqlOpenHelper itp. Ale za każdym razem w takim poradniku ktoś umieszczał w kodzie wszystkie rekordy. Więc tutaj nasunęło mi się pytanie. Czy mogę stworzyć sobie w dedykowanym programie bazę danych SQLite, wypełnić ją, a potem tylko podpiąć? Wrzucić gdzieś do jakiegoś folderu aplikacji, a następnie ją wykorzystywać do pobierania i ustawiania odpowiednich elementów (czyt. Pytanie, 4 odpowiedzi i poprawna odpowiedź). Jeśli można tak zrobić to moje pytanie brzmi z czego konkretnie skorzystać? Jak wskazać programowi, że chodzi o tą bazę, w tym miejscu, a potem móc kursorem pobierać rekordy? 

    Dziękuję z góry za odpowiedź! 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    Tak możesz stworzyć bazę gdzie indziej a potem ją importować plik sql. Jeszcze lepiej zrobić bazę danych zdalnie i do nie się podłączyć na przykład firebase. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    21 godzin temu, mmaciejow napisał:

    Tak możesz stworzyć bazę gdzie indziej a potem ją importować plik sql. Jeszcze lepiej zrobić bazę danych zdalnie i do nie się podłączyć na przykład firebase. 

    Utworzyłem w programie BataBaseBrowser bazę danych (id AI, question TEXT,  odpA/B/C/D TEXT, correct TEXT). Następnie wyeksportowałem to do pliku .sql i nazwałem question_file.
    Utworzyłem folder zasobów assets i tam wrzuciłem question_file.sql. No i tutaj zaczęły się schody, a jak teraz to otworzyć? Użyłem metody

    val db = openOrCreateDatabase("question_file",Context.MODE_ENABLE_WRITE_AHEAD_LOGGING,null) 

    No i potem chciałem wykonać zapytanie db.query().. [SELECT * FROM question_file] tak wygląda zapytanie po przekonwertowaniu na język SQL. I wyskakuje błąd

    08-29 13:08:05.363 24534-24534/com.example.android.quizapp D/PROBLEM!!!: Cos nie poszlo android.database.sqlite.SQLiteException: no such table: question_file (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM question_file

    Ustawiłem sobie Log'a i wykonywałem to w sekcji try/catch aby wychwytywać wyjątki. 

    Nie mam pojęcia co mam użyć, try/catch łapie wyjątek tylko w momencie używania db.query(), gdy wykadałem wartości przez db.insert() nie pokazywało niczego. 
     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    Sprawdź to:

    SQLiteDatabase sampleDB =  null;
    private static String DB_PATH = "YOUR_PACKAGE/databases/";
    private static String DB_NAME = "studentDB";
    sampleDB =  SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, SQLiteDatabase.CREATE_IF_NECESSARY); 
    Cursor c = sampleDB.rawQuery("SELECT * FROM product where id='1'", null);
    ....

     

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Nie działa, albo ja coś źle robię. Mam pytanie czy jestem w stanie dostać się do folderu databases w projekcie aplikacji? Bo aktualnie moja baza znajduje się w folderze assets. I drugie pytanko jeśli wskazuje sciezkę do jakiegoś pliku to jak ona wygląda? 

    1. com.example.android.quizapp.assets.DataBase.sql
    2. com.example.android.quizapp.assets.DataBase
    3. com/example/android/quizapp/assets/DataBase.sql
    4. com.example.android.quizapp/assets/DataBase.sql
    Bo sam już nie wiem co jest nie tak. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    W androidzie działając na bazie sqlite działasz na lokalnej bazie - czyli możesz znaleźć plik _nazwa mojej bazy_.db w folderze obok innych danych Twojej aplikacji (takich jak prefs itd). Aby móc skorzystać z bazy, którą dostarczasz do aplikacji musisz przekopiować zawartość tej bazy do Twojej nowej bazy. 

    Polecałbym znaleźć inny sposób na dostarczenie tych danych

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x