2012-02-18 23 views
7

Tworzę swoją pierwszą aplikację na Androida, która będzie korzystać z SQlite. Mam zerowe doświadczenie z bazami danych, z wyjątkiem tworzenia bazy danych MySQL do korzystania z wordpress ...Używanie Reszta do przechowywania danych w Sqlite


Edycja: Po robi jakieś badania na temat wypoczynku, nadal jestem zagubiony jak reszta, SQLite, i Android dev pasują do siebie. Moim celem jest uzyskanie dostępu do usługi internetowej opartej na oparach za pośrednictwem adresu URL i dostęp do niektórych zbiorów danych, a następnie przechowywanie ich w mojej bazie danych SQlite. Następnie chcę uzyskać dostęp do zawartości bazy danych za pośrednictwem mojego programu java i użyć ich odpowiednio.

Zbiory danych można pobrać pojedynczo w CSV format, ale ponieważ będę używać ich tak wielu, nie chcę przechodzić przez każdą linię indywidualnie i przechowywać je w bazie danych. Mam nadzieję, że istnieje skuteczniejszy sposób przechowywania tych zbiorów danych w bazie danych.

Moje główne pytania:

  • Jak mogę skopiować zawartość XML strony internetowej z adresu URL do mojej bazy danych SQLite? Czy mogę to zrobić za pomocą mojego programu java, bazy danych sqlite lub biblioteki java?
  • Czy muszę tylko raz skopiować zawartość stron internetowych z adresu URL do bazy danych sqlite? Jeśli tak, co mogę zrobić, jeśli w zestawach danych zostaną zmienione jakieś informacje?

Odpowiedz

5

Najpierw potrzebujesz schematu dla sqlite DB. Ten schemat powinien być odwzorowany na obiekty znajdujące się za usługą sieci Web. Na przykład, potrzebujesz tabeli Person w twoim DB, jeśli w Internecie istnieje podmiot Osoba. To zależy od tego, co chcesz uchwycić.

Po zakończeniu projektowania schematu powinieneś rozpocząć pisanie kodu, który pomoże Ci utworzyć DB na Androidzie na poziomie &. Odbywa się to za pomocą klasy SQLiteOpenHelper: http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

Jeśli zachodzi potrzeba synchronizacji bazy danych z danymi w chmurze (usługi sieciowe), należy zaimplementować synchronizację. Android zapewnia bardzo wydajną strukturę synchronizacji.

Również zrobić obejrzeć ten film od inżynierów z Androidem wyjaśniający najlepsze praktyki: http://www.youtube.com/watch?v=xHXn3Kg2IQE

uwaga, faktycznie pobrać dane z usługi internetowej należałoby użyć URLConnection API: http://developer.android.com/reference/java/net/URLConnection.html

Ta próbka prawdopodobnie zrzuty większość z tego. http://developer.android.com/resources/samples/SampleSyncAdapter/index.html

+0

Dzięki, te referencje odpowiedziały na wszystkie moje pytania !! – mdegges

0

Mogę odpowiedzieć na twoje pierwsze pytanie na temat "Nie wiem, jak je efektywnie dodać"? Tak, SQlite jest bardzo potężny i inteligentny, możesz dodać tysiące rekordów w jednej transakcji, podobnie jak tradycyjna baza danych, znacznie poprawia to wydajność.

o drugim pytaniu, jak rozumiem, ponieważ plik CVS jest bardzo prosty, więc możesz go pobrać i przeanalizować samodzielnie.

3

Pod względem odczytu plików CSV, istnieje kilka dobrych zasobów tutaj:

Can you recommend a Java library for reading (and possibly writing) CSV files?

Po przeczytaniu każdego wiersza CSV do obiektu, można odwrócić i utrzymują go do bazy danych. Jestem autorem ORMLite, więc opowiem o używaniu go. Nie wierzę, że istnieje port hibernacji dla Androida.

Istnieje szereg Android examples, które pomogą Ci przyspieszyć działanie ORMLite. Również some good tutorials. Jeśli chcesz napisać kilka wierszy naraz, to polecam użycie funkcji ORMLite zadań wsadowych. Aby uzyskać informacje, zobacz discussion about creating lists of objects na liście mailingowej.

+0

Dziękuję za odpowiedź. Nie wiedziałem o tym, kiedy wczoraj opublikowałem moje pytanie, ale na stronie internetowej jest API, które używa odpoczynku, aby zapewnić dostęp do zbiorów danych. Ponieważ istnieje tak wiele dużych zestawów danych, których potrzebuję użyć, a teraz, gdy wiem, że istnieje określony interfejs API, odpowiednio zaktualizowałem swoje pytanie. – mdegges

+0

Stworzyłbym inne pytanie, ponieważ teraz moja odpowiedź nie ma sensu. @mdegges – Gray

Powiązane problemy