Ansätze für MySQL Datenbank lesen/schreiben

  • Antworten:12
JuSTuS JonaS
  • Forum-Beiträge: 3

28.02.2011, 11:26:34 via Website

Hallo liebe Community!

Ich habe mich gerade registriert und hoffe das ich in eurem Forum viele hilfreiche Antworten finden werde und bei steigendem KnoHow auch anderen helfen kann :)

Zu meiner Frage:
Ich möchte mich in Android-Entwicklung einarbeiten und habe eine Idee für eine kleine App. Diese App benötigt eine Datenbank. Die Datenbank soll eine MySQL Datenbank sein, da ich diese kenne und sie kostenlos einsetzbar ist.
Nun steht ich vor dem Problem wie ich per Android diese DB lesen und/oder schreibend ansprechen kann. Ich habe schon mehrere Tutorials gefunden und ausprobiert -> https://www.nextpit.de/de/android/forum/thread/410944/MySql-Datenbank-in-eine-ListView-auslesen. Es funktioniert auch. Allerdings wird in diesen Tutorials immer eine myPHP.php Datei auf dem Webserver angetriggert, welche dann die DB ausliest und den Inhalt per JSON an Android zurückliefert.
Da ich selbst von PHP soviel Ahnung habe wie eine Kuh vom Fußball, denke ich das dies nicht die beste Lösung ist. Grund für meine Annahme ist, dass der DB Inhalt blank im Browser ausgegen wird. Also wenn ich die URL www.myPage.de/myPHP.php anwähle, wird der DB Inhalt im Browser angezeigt. Angenommen das dieser Inhalt vertraulich ist oder vielleicht Passwörter speichert, wäre das ja eine riesen Sicherheitslücke.
Ich habe nun auch gelesen das diese Verbindung an eine DB per Webservice mögich ist. Allerdings finde ich dazu kein (für mich) verständliches Tutorial.

Daher meine Frage an euch, ob ihr ein gutes Tutorial für diesen Sachverhalt kennt, oder mir sagen könnt, inwiefern der Ansatz per PHP keine Sicherheitslücke bietet oder mir einen Code Schnipsel gebt, an dem ich mich orientieren kann.

Vielleicht wäre es schön, wenn sich jemand auf diesen Post meldet, der mal grundsätzlich die möglichen Alternativen für einen Datenbankzugriff per Android auflistet und wenn dann vielleicht sogar auf die einzelnen Vor und Nachteile eingehen könnte.

Ich hoffe ich verlange nicht zu viel, aber ich will ja auch schlauer werden ;)

Vielen Danke schon mal im Vorraus,
Gruß Justus

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

28.02.2011, 11:42:34 via Website

hallo

die frage ist:

benötigst du eine db wirklich online auf deinem server oder reicht es nicht, wenn die db lokal am telefon ist?

android bietet mit sqlite eine mysql ähnliche datenbank direkt auf jedem gerät an.

swordiApps Blog - Website

Antworten
JuSTuS JonaS
  • Forum-Beiträge: 3

28.02.2011, 14:31:23 via Website

Hallo...

Danke für deine Antwort aber die Frage habe ich mir auch schon gestellt. Bin aber der Meinung das es 1. Benutzerfreundlicher ist eine externe DB zu verwenden, da sonst bei jeder Aktualisierung der Daten, alle anderen die ebenfalls die Daten benötigen, die DB mitgesendet bekommen müssen. Sinn der App soll es ja sein, das ein user eine DB anlegen kann und mit Daten befüllt. Dieser User kann dann anderen Kontakte aus seinem Handy "einladen", Diese eingeladenen User können sich dann die Daten ebenfalls ansehen und auch bearbeiten. Das würde doch heißen, dass die DB jedem eingeladenen User mitgeschickt und bei jeder Aktualisierung an alle weitergeleitet werden muss. Sehe ich das falsch?
Der 2. und für mich viel wichtigere Grund ist der, dass ich gerne etwas mit einer externen DB machen möchte, um diese Thematik einmal gemacht zu haben. Also mein Lernfortschritt steht mir da im Fokus. Damit ich das Anbinden und Verwenden von externen Datenbanken per Android gleich richtig lerne, habe ich mir die in meinem ersten Post gestellt Frage überlegt.

Antworten
JuSTuS JonaS
  • Forum-Beiträge: 3

28.02.2011, 17:20:25 via Website

kann mir sonst keiner weiterhelfen? Oder habe ich mich zu umständlich ausgedrückt?

Gruß,
Justus

Antworten
L3322
  • Forum-Beiträge: 467

28.02.2011, 17:27:38 via App

Vllt kannst du ja auch eine Php aus den assets aufrufen?!

wenn du da dann den Pfad angibts...

ich weiß es selber nicht aber Versuchs da mal würde mich auch interessieren

"Hard work beats talent, when talent fails to work hard"

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

28.02.2011, 17:36:52 via Website

naja es wird leider kein weg an php vorbeiführen.

oder aber du schaust dir die google app engine an. das könnte hilfreich sein

aber im groben benötigst du eben:

SERVER
datenbank
connector ( java, php, oder was auch immer )

CLIENT
abfrage und verarbeitung der response


meistens werden eben json oder xml texte hin und hergeschickt - am server wird mittels php/java/oä ein xml gebaut und zum client geschickt

dafür gibt es aber unzählige tutorials im netz

swordiApps Blog - Website

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

28.02.2011, 18:35:31 via Website

Es sind halt die üblichen Sicherheitslücken. Es sicher zu programmieren liegt letztendlich an Dir, unabhängig in welcher Scriptsprache (oder Programmiersprache). PHP bietet sich aber an, da es weit verbreitet ist. Hast Du aber Erfahrungen in einer anderen Sprache und Du hast einen Server worauf es läuft, nimm das. Achten sollte man zB auf Injektions, auch wenn die Server meist schon recht sicher eingerichtet wurden.
Wenn Du Passwörter sicher versenden willst, gibt es SSL.
Tutorials werden aber nur grob das Modell vorstellen, die Umsetzung in allen Feinheiten liegt letztendlich wieder an Dir. Dazu gehört, dass Du Dich dann zB über die Scriptsprache (PHP, Python etc.) nochmal genau informierst.

Antworten
Dominic Bartl
  • Forum-Beiträge: 180

01.03.2011, 18:51:38 via Website

Wenn du auf eine Datenbank, die nicht lokal am Handy, zugreifen willst hast du 2 Möglichkeiten. Wie erwähnt PHP, was ich persönlich auch nicht so gut finde und JDBC. Mit der du über Java dich mit einer Datenbank verbinden kannst.
http://dev.mysql.com/downloads/connector/j/

Du musst dich halt einarbeiten. Das ist meiner Meinung nach die beste Lösung.

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

03.03.2011, 07:53:16 via Website

Dominic Bartl
. Wie erwähnt PHP, was ich persönlich auch nicht so gut finde und JDBC.

Ich spreche jetzt mal nicht von PHP (bin selbst kein Fan der Sprache). Aber wieso wollt Ihr alle immer direkt an die Datenbank ran? Jedem Software-Architekten dreht sich bei dem Gedanken der Magen um! Abgesehen davon, dass die Datenbank dafür im Internet verfügbar sein muss, versklavt Ihr eure App an der Struktur der DB. Zusätzlich ladet Ihr mit einer potentiell schlechten Internetanbindung mehr Daten aus der DB als Ihr wirklich braucht. Ihr müsst auf einem Gerät mit limitierten Ressourcen mehr berechnen, weil das Datenmodell der DB nur selten mit dem der Anwendung übereinstimmt. Ändert Ihr aus diversen Gründen das Datenbank-Design, müsst Ihr die App anpassen, damit die noch weiterhin funktioniert. Ihr schließt also mit einem Streich Nutzer aus, die entweder nicht Update-willig oder unfähig sind. Tut mir und allen anderen Nutzern den Gefallen und nutzt Webservices als Datenabstraktion auf euren Servern. Die müssen nicht in PHP entwickelt sein, das geht auch in Python, Java oder C#. Datenabstraktion ist an der Stelle mehr als Sinnvoll.

— geändert am 03.03.2011, 07:57:21

Seid nett zueinander: AndroidPIT-Regeln ;)

christian mockMarkus Gu

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

03.03.2011, 08:16:03 via Website

Danke Carsten,

Du sprichst mir aus der Seele. Alleine schon aus Sicherheitsgründen sehe ich es als Pflicht an, ein Data-abstraction Layer einzuziehen.

Darüber hinaus ist es sinnvoll das ganze über einen Webservice oder eine WEbschnittstelle zu führen, da nicht jeder Provider bspw. den Zugriff auf Port 3306 oder ähnliche Datenbank-Ports durchrouten wird. Der Web-Port 80 dagegen wird wohl in der Regel erreichbar sein.

Sicherheit hinsichtlich SQL Injection ist in allen Fällen selbst zu tun. Da gibt es kein Allheilmittel, von der Verwendung von Prepared Statements mal abgesehen. Auch um die entsprechende Authentication für die Zugriffe wird man sich immer selbst kümmern müssen.

lg Voss

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

03.03.2011, 09:01:28 via Website

Markus Gursch
oder aber du schaust dir die google app engine an. das könnte hilfreich sein
Jupp !

Darüber musste ich mal einen Vortrag ausarbeiten und die ist wirklich sehr interessant.

Vor allem für Android-Apps, die einfach nur mal kurz was zwischenspeichern wollen, reichen die Beschränkungen der kostenlosen Variante absolut aus und einfach zu benutzen ist es auch.

An efficient application on a free account can use up to 1GB of storage and up to 5 million page views a month.

Perfekt, wenn man selbst keinen Webspace mit PHP/Java/... hat.
Kann man mal eben WebApps kostenlos hosten.

— geändert am 03.03.2011, 09:03:05

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

03.03.2011, 09:16:47 via Website

@Jörg der Punkt mit den Ports ist mir auch noch vorhin beim Duschen eingefallen. Es sind ja nicht nur die Provider die nur die Standard-Ports durchlassen. Auch Firmennetze sind für Gewöhnlich nur für Web und Mail durchlässig.

Seid nett zueinander: AndroidPIT-Regeln ;)

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

03.03.2011, 11:03:07 via Website

ihr habt alle sowas von recht !!! ;) full ack

swordiApps Blog - Website

Antworten