Android połączenie z lokalną bazą danych [MySQL, Postgres].

0

Witam, nie mogę rozwiązać problemu. W Google też nie ma zadowalającej odpowiedzi.

Pisałem już aplikację na Androida taką która łączy się z SQLite poszło super, ten typ baz jest wspierany przez biblioteki. Co jednak jeśli chciałbym użyć np. MySQL, Postgres itd ? Do tej pory korzystałem z Javy przy programowaniu webowym jak to się ma do tworzenia aplikacji na urządzenia mobilne? Co zrobić by połączyć się z serwerem baz danych zarówno lokalnie jak i zdalnie w przyszłości ? W Javie EE zwykle potrzebna była klasa typu Connector (pobieranie danych i przesyłanie ich do odpowiednich kontrolerów). Ogólnie to chyba nie rozumiem architektury androidowych aplikacji stąd te problemy...

Proszę o pomoc,
dziękuje.

0

Potrzebujesz API, które ci po HTTP udostępni dane z bazy danych innego typu niż SQLite.

0

Jak już zaprzęgamy API to przechodzenie na 'dużą bazę traci sens. Postgres powołuje dziesiątki procesów, MySQL niewiele mniej, sądzę że nie istnieje port na telefon.
Gdybyś SQLLite chciał wyposażyć w mapper, ja używam com.raizlabs.android.dbflow

0

No przyznam, że się napociłem a efektu nie uzyskałem. Chyba nie potrafię połączyć aplikacji na Androida z zewnętrznym serwerem baz danych, to prostu nie działa albo ja czegoś nie rozumiem. Istnieje do tego jakiś podręcznik, jakieś TO DO? W ogóle chyba ludzie potrzebują czasem bazy danych, bo niby jak zaciągać dane z serwera. Totalnie zgłupiałem...

Zebrałem informacje i napisałem poradnik, no ale nadal zero efektu w działaniu:

**
Zewnętrzny serwer bazy danych**
Rozwiązanie by Android łączył się bezpośrednio z serwerem bazy danych nie jest standardowo wdrażane. Lepiej jest stworzyć prostą usługę internetową, która przekaże żądania do bazy danych i zwróci odpowiedź.

Dobrze jest komunikować się z serwerem baz danych za pośrednictwem HTTP + JSON, SOAP, XML-RPC itd. Zapewnia to znacznie większą przepustowość i sprawia, że aplikacja jest bardziej tolerancyjna na problemy z łącznością. Rozwiązanie oszczędza również konieczności ujawniania serwera bazy danych bezpośrednio w Internecie.

Używając JAX-RS na JBoss AS 7, Tomcat 7 lub podobnym, łatwo stworzyć interfejs API usług RESTful XML / JSON dla aplikacji. Ludzie również dość często do łączęnia się z serwerem korzystają z API REST / JSON z PHP.

0

Nawet sam sobie teraz odpowiedziałeś, opcji masz kilka i to jest zależne w czym chcesz pisać i co chcesz osiągnąć, ale wszystko niestety sprowadza się do WebAPI, tak jak pisałem ci wyżej.
Bardzo popularne jest ASP .NET Core teraz
ASP.NET Core 2.1: Building a Simple Web API

.NET Core 3.0 ma swoją premierę 23-25 września. WebAPI w innych technologiach nie znam, ponieważ programuje w C#, w większości przypadków. Nie piszesz czego próbowałeś, że tak się napociłeś.

0

Wszystko zależy od tego co chcesz osiągnąć. Piszesz o połączeniu z lokalną bazą danych. Zakładam więc, że chodzi o bazę danych na telefonie. Android wspiera SQLite, są również rozwiązania takie jak Realm. Generalnie wadą takiego rozwiązania jest to, że po usunięciu aplikacji dane również będą usunięte jak i dostęp do danych ogranicza się do jednego urządzenia.

Tutaj z pomocą przychodzi zewnętrzna bada danych i API które obsłuży zapytania wysyłane z aplikacji. W ten sposób zabezpieczasz dostęp do bazy danych (adres bazy, login i hasło nie są przechowywane na urządzeniu, używając reverse engineeringu można takie dane odczytać jeżeli są zapisane w aplikacji).

Jak to działa? (uogólniając i upraszczając)
1). Aplikacja wysyła zapytanie uwierzytelniające do API zawierające login i hasło użytkownika (albo używa OAuth do autoryzacji), w odpowiedzi otrzymuje token sesji który będzie używać w przyszłych zapytaniach
2) Aplikacja wysyła zapytanie do API (dołączając token uwierzytelniający) o dane
3) API weryfikuje token, komunikuje się z bazą danych i zwraca dane w odpowiedzi
4) Aplikacja zapisuje lokalnie otrzymane dane

Baza może być dowolna. API może też być napisane w dowolnym języku. Najczęściej używane są gotowe biblioteki takie jak Ruby on Rails dla Ruby, Flask, Dajngo dla Pythona i wiele innych. Każda technologia ma swoje wady i zalety więc wystarczy poczytać.

https://restfulapi.net/
https://devszczepaniak.pl/wstep-do-rest-api/

0

Dać się to się da, skoro są takie aplikacje: https://play.google.com/store/apps/details?id=com.kriskast.remotedb
Aczkolwiek, nie praktykuje się tego raczej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1