Android App mit Zugriff auf externe Datenbank (wie?)

  • Antworten:9
Martin F
  • Forum-Beiträge: 4

16.03.2011, 14:11:13 via Website

Hallo,
ich hab schon diverse Forenbeiträge hier und in anderen Foren durchgelesen, aber meine Frage ist immer noch nicht so wirklich beantwortet.

Zu meiner Frage:
Ich möchte eine Androidapp schreiben und diese soll neben einer lokalen SQL Datenbank auch Zugriff auf eine externe (auf einem Server im Internet , nicht auf der SD Karte oder so) Datenbank haben! (zB. Mysql)
D.h. es sollen Datensätze in Tabellen gelesen und geschrieben werden können (z.B. aktueller Status, Nickname usw).
Wie setze ich das ganze jetzt um ?
Soweit ich weiß kann man seit Android 2.3 mit JDBC arbeiten. Deswegen war dass das erste was ich versucht habe. Wie aus Java gewöhnt Mysql-Connector in die lib eingebunden, treiber geladen usw..(standart vorgehen). Das Ganze ist dann immer an einem Fehler gescheitert den ich auch nach langer Recherche nicht lösen konnte ("Conversion to Dalvik format failed with error 1") -> hab alles versucht "project cleaning" usw.
Desweiteren hab ich gelesen, dass aus Performancegründen generell von JDBC abgeraten wird bei Android apps!? Ist das so ?
Mein nächster Ansatz war dann, dass ich ein Tutorial gefunden hab wo man eine PHP Datei auf seinen Server packt, welche die Mysql Datenbank ausliest und mit der App kommuniziert. Ich hab das noch nicht ausprobiert weil ich mir nicht sicher war ob man bei dieser Variante auch von der App in die DB schreiben kann!? Außerdem scheint mir diese Variante eher eine Bastellösung zu sein, oder irre ich mich da.
Generell scheint mir dass ja in die Richtung Webservice zu gehen. Ist es also die beste Variante für die eigene DB einen eigenen Webservice zu schreiben ? Wenn ja hat da jmd vllt ein Link zu einem guten Tutrial, welches auch für Anfänger geeignet ist ? (anscheinend gibt es ja da relativ viel: C2DM von Google, kSoap2 usw)
Und als letztes habe ich noch was von ContentProvidern gelesen. ist das nur für den Datenaustausch zw lokalen Apps geeignet oder kann man das auch für meine Problematik verwedenen.

Hoffe es hat jmd die Motivation das durchzulesen ;) Vielen Dank im Voraus
Eigentlich sollte doch dass nicht so schwer sein auf eine externe DB zuzugreifen, ich meine dass machen doch soooo viele Apps =)

— geändert am 16.03.2011, 14:15:54

Antworten
Andy N.
  • Forum-Beiträge: 3.112

16.03.2011, 14:27:47 via Website

Die beste Lösung ist schon, wenn Du auf dem Server ein Script (oder Programm) hast, welches die Daten annimmt und in die Datenbank schreibt, bzw ausgibt.

Du rufst dann zB mit der App die URL ab www.meinserver.de/daten.php?name=Guybrush&beruf=Pirat (kannst auch alternativ eine xml oder json übergeben), der Server bearbeitet die Anfrage und gibt zB eine Antwort, dass die Daten geschrieben wurden. Genau so kannst Du auch Daten abfragen.

Im Forum für Tutorial ist zB ein Beispiel drin.

Antworten
Gian U.
  • Forum-Beiträge: 117

16.03.2011, 14:40:37 via Website

Ich würde dir einen Webservice empfehlen. Selbst benutze ich einen RESTful Webservice (http://de.wikipedia.org/wiki/Representational_State_Transfer). Es gibt viele Frameworks (z.B. das Zend Framework, CakePHP, ...), die schon fertige Klassen dafür anbieten. Für das Zend Framework wäre das Zend_Rest für einen RESTful Webservice.

Mnemono - Efficient learning!

Antworten
Martin F
  • Forum-Beiträge: 4

16.03.2011, 15:26:02 via Website

Danke für die schnellen Antworten! Bei meiner App hab ich in der externen Datenbank vllt. max 5 Tabellen auf welche zugegriffen wird. Ist für diesen Zweck ein Webservice nicht ein bisschen overdressed ? Ich hab mit solchen Frameworks noch nie gearbeitet, wie schwer ist es sich in diese einzulesen bzw diese zu installieren und zu verweden? Wenn das all zu komplex ist, würde ich eher auf die Variante zurückgreifen wo man sich eine Skriptdatei schreibt und auf den sever legt =)

Antworten
Gelöschter Account
  • Forum-Beiträge: 107

16.03.2011, 15:30:21 via Website

REST klingt jetzt mit Sicherheit schlimmer als es ist. Im Endeffekt transportierst du auf HTTP-Basis Daten hin und her. Die Daten beschreibst du mit JSON oder XML. Abrufen mit GET, Senden mit POST oder PUT, Löschen mit DELETE,.... Dein Script oder Framework oder was auch immer reagiert dann entsprechend auf die Anfragen. Große Frameworks brauchst du dazu jedenfalls nicht. Das geht auch sehr schlank mit PHP, Python, Ruby oder Perl ;)

Seid nett zueinander: AndroidPIT-Regeln ;)

Antworten
Stefan S.
  • Forum-Beiträge: 560

16.03.2011, 16:44:39 via Website

Wäre dies auch mit Asp.Net möglich? Dort kann man auch Querys senden/empfangen. Wobei ich dann hier ein WebService machen würde.

Antworten
Andy N.
  • Forum-Beiträge: 3.112

17.03.2011, 10:25:45 via Website

Es geht mit jeder Spache, die auf dem Server ausgeführt wird.

Antworten
Gelöschter Account
  • Forum-Beiträge: 107

17.03.2011, 14:53:49 via Website

Stefan S.
Wäre dies auch mit Asp.Net möglich? Dort kann man auch Querys senden/empfangen. Wobei ich dann hier ein WebService machen würde.

Du willst definitv keine Queries durch das Netz schicken. Gründe hab ich vor kurzem erst hier skizziert:

https://www.nextpit.de/de/android/forum/thread/419149/Ansaetze-fuer-MySQL-Datenbank-lesen-schreiben

Seid nett zueinander: AndroidPIT-Regeln ;)

Antworten
Stefan S.
  • Forum-Beiträge: 560

23.03.2011, 08:14:03 via Website

Carsten Rose
Stefan S.
Wäre dies auch mit Asp.Net möglich? Dort kann man auch Querys senden/empfangen. Wobei ich dann hier ein WebService machen würde.

Du willst definitv keine Queries durch das Netz schicken. Gründe hab ich vor kurzem erst hier skizziert:

https://www.nextpit.de/de/android/forum/thread/419149/Ansaetze-fuer-MySQL-Datenbank-lesen-schreiben

Ich wollte eigentlich gar nicht Queris schreiben sondern nur auf den WebService verweisen.
Deinen Beitrag zum Thema DB und WebSerivces finde ich super. Komme selber aus der SW-Entwicklung (halt MS, darum meine Umsteigerfragen...)

Antworten
Rover
  • Forum-Beiträge: 18

27.03.2011, 22:13:54 via App

hallo,
mysql ohne ssl ins internet zu stellen ist nicht wirklich gesund, webservices ist hier die bessere lösung (z.b soap)

Antworten