MySQL oder SQLite-Datenbank für ständigen Datenaustausch?

  • Antworten:14
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 27

21.09.2016 20:51:49 via Website

Hallo zusammen,

bin schon ein wenig Fortgeschritten in grundlegenden Sachen in Android Studio, aber noch Anfänger in Sachen Datenbanken.

Mein "Projekt", wenn man es schon so nennen kann, sieht so aus, dass jeder von seinem Gerät aus eine Textnachricht schreiben kann, die andere auf ihrem Gerät abrufen kann. Jedoch finde ich im Internet einfach keine Tutorials, die bei mir auch wirklich funktionieren.

Aus Testzwecken habe ich mir erstmal eine lokale MySQL-Datenbank angelegt, da ich der Meinung war, dass das für 's Coding reicht.

Nun habe ich auch was von SQLite-Datenbanken gesehen, aber ich glaube damit kann man nur lokale Datenbanken erzeugen, oder?

Kann mir damit bitte jemand auf die Sprünge helfen? Möchte keinen kompletten Quelltext, eher gute Quellen zum lernen.

Mit freundlichen Grüßen,
Jan G

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.305

21.09.2016 21:30:26 via Website

Hallo Jan,
Herzlich wilkommen hier im Forum :)

Es guibt einmal die lokale SqLite DB, diese ist aber nur auf jeden Gerät individuell vorhanden und kann auch nicht so einfach übertragen werden.
Wenn du eine online MySql anbindung willst, wirst du zwangsweise eine WebApi bracuhen, denn direkt zugriff auf eine MySql DB wird dir kaum ein Webhoster erlauben und das wäre zudem unsicher...

Wie man da einsteigen kann, das findet man leicht im Inet mit Stichworten wie "Android mysql over php" oder so.

Wenn du dich dann mal damit eingefunden hast und eine richtige Rest API in PHP programieren willst, dann schau mal hier rein: https://www.androidpit.de/forum/721529/tutorial-fuer-fortgeschrittene-android-an-eine-php-rest-api-anbinden Da habe ich mal ein Tutorial geschrieben wie man soetwas sauber aufbauen könnte (falls man es "professionell" machen will, soweit das in PHP geht)

Ich weiß ja nicht für was du eine DB brauchst und welche Daten da drinne stehen, aber man kann durchaus auch DBs mit API von externen Anbietern wie z.b. Google nehmen. Dafür sind halt deine Daten dann bei Google gehostet (aber in eine App deutlich einfacher eingebaut).

Musst du dir überlegen was du willst.

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 27

21.09.2016 21:39:20 via Website

Hallo Pascal,
Danke!

Auch danke für den Hinweis auf dein Tutorial, aber ich denke dazu bin ich wirklich noch nicht gebacken.
Hingegen hört sich die Variante über Google für meine Anfänger-Zwecke sehr interessant an. Werde mal probieren mich dort hereinzufuchsen. Hast du dazu vielleicht auch noch extra Tipps oder reicht da Google?

Mit freundlichen Grüßen,
Jan G.

  • Forum-Beiträge: 27

22.09.2016 14:53:26 via Website

Hab' mich mal an die Sache 'rangesetzt und komme auch soweit gut klar, bis auf ein Problem.
Habe mich an folgendem Tutorial orientiert: image
(Sorry für die Umgehung der Forenregel..)

Funktioniert auch soweit gut, bis auf dass ich eine Fehlermeldung nicht los werde:

        new Firebase("*Web-Adresse*")
            .addChildEventListener(new ChildEventListener() {
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    adapter.add((String)dataSnapshot.child("text").getValue());
                }
                public void onChildRemoved(DataSnapshot dataSnapshot) {
                    adapter.remove((String)dataSnapshot.child("text").getValue());
                }
                public void onChildChanged(DataSnapshot dataSnapshot, String s) { }
                public void onChildMoved(DataSnapshot dataSnapshot, String s) { }
                public void onCancelled(FirebaseError firebaseError) { }
            });

Bei mir wird das "ChildEventListener" rot unterstrichen mit der Begründung:

image

Hab' mal ein bisschen 'rumgegoogelt, aber auch da finde ich keine Hilfe. Hab' mal probiert abstract davor zu schreiben etc., aber das half mir auch nicht.

Kann mir da eventuell jemand weiterhelfen?

Mit freundlichen Grüßen,
Jan G.

  • Forum-Beiträge: 2.214

22.09.2016 15:15:51 via Website

Hallo Jan,

dir fehlt eine @Override mit der Deklaration "onCancelled (DatabaseError)"

Füge diese hinzu und gut ist

P.S So wie du das umgesetzt hast , hast du die im übrigen alle falsch
http://stackoverflow.com/questions/33956849/how-using-both-functions-to-listen-data-on-firebase-android

Das hier zum Verständniss & Lernen
http://openbook.rheinwerk-verlag.de/javainsel/

Und in AS -> CTRL + O

lg
Stefan

— geändert am 22.09.2016 15:30:07

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 27

22.09.2016 15:38:12 via Website

Tut mir leid wenn ich mich doof anstelle, aber mit den Veränderung wie ich sie verstehe, sieht es so aus:

image

  • Forum-Beiträge: 2.214

22.09.2016 15:49:32 via Website

Nun , da liegt bei Dir der wesentliche Punkt. - Grundlagen

Du musst schon wissen ,was du tun willst und wie du es letztendlich umsetzen möchtest.
Es gibt verschiedene Wege, aber du musst dich zu Einem entscheiden.
Und vor allem wissen ,was dabei passiert

https://firebase.google.com/docs/database/server/retrieve-data

Siehe auch meinen Link den ich in meinem ersten Post verwendet habe

https://www.teialehrbuch.de/Kostenlose-Kurse/JAVA/6621-Ueberschreiben-von-Methoden.html

— geändert am 22.09.2016 16:00:44

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 27

22.09.2016 16:19:02 via Website

Hm, schade, ich dachte mein grundlegendes Wissen in Java reicht aus um mit der Programmierung von Apps anzufangen.

Dann werde ich mir die Links mal anschauen, danke!

  • Forum-Beiträge: 2.214

22.09.2016 16:22:28 via Website

Niemand möchte dir natürlich auf die Füsse treten.
Allerdings als "Newbie" sich an so etwas heranwagen ist schon ein wenig happig .... :-)

Du kannst natürlich gerne hier immer wieder Fragen - egal wie doof die Frage auch ist.
Aber fange klein, fundiert und langsam an - jeder von uns hat das hinter sich

Viel Erfolg

— geändert am 22.09.2016 16:23:48

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.305

22.09.2016 20:49:25 via Website

Grundlegende Javakenntnisse reichen schon aus, wobei ich Grundlegend so definiere, dass man alle Möglichen Konstrukte kennt:
- Klassen
- Vererbung/Überschreiben etc.
- Interfaces/Callbacks
- Annotations
- OOP Prinzip

Gehört für micht dazu, erst wenn man das kann, kann man auch die Google APIs und alles drumrum recht gut implementieren, da man einfach weiß was man da tut und nicht " auf gut glück" herumprobiert bzw. es nur nach dem Inet macht.

Vertieftes wissen ist dann eher was in mehr Fachliche Richtung:
z.b. Sortierung oder Oder Komplexere Grafik sachen

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 27

22.09.2016 21:22:58 via Website

Danke für den Rat!

Dann werde ich mich wohl erstmal den kleineren Dingen nochmal zuwenden.

Mit freundlichen Grüßen,
Jan G.

  • Forum-Beiträge: 27

22.09.2016 22:12:36 via Website

Okay, tut mir leid, aber mich lässt es nicht los. Ich muss das Problem finden, sonst kann ich heute Nacht nicht schlafen. :/

Bin ich damit auf der richtigen Fährte?

        new Firebase("*Web-Adresse*")
            .addChildEventListener(new ChildEventListener() {
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    adapter.add((String)dataSnapshot.child("text").getValue());
                }
                public void onChildRemoved(DataSnapshot dataSnapshot) {
                    adapter.remove((String)dataSnapshot.child("text").getValue());
                }
                public void onChildChanged(DataSnapshot dataSnapshot, String s) { }
                public void onChildMoved(DataSnapshot dataSnapshot, String s) { }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    onCancelled (FirebaseError);
                }
            });

Mit freundlichen Grüßen,
Jan G.

— geändert am 22.09.2016 22:17:14

  • Forum-Beiträge: 2.214

22.09.2016 23:31:32 via Website

Hallo Jan,

leider nein .. das hatte ich aber schon beantwortet, denn den code hast schon mal gepostet.

Bitte lies dir genau die Links durch, die ich dir geschickt habe ( stackoverflow / google)
Beim ersten Link wird dir haarklein erklärt, warum man es so und so machen kann und dann muss

Der zweite Link ist ein 100% funktionierendes Tutorial.
Stellt sich für mich dann natürlich die Frage , warum du das nicht so umgesetzt hast und dann nochmal fragst :-)

und GANZ wichtig : Der letzte Post von Pascal - mehr kann man dazu nicht schreiben - trifft auch 100 %

P.S
Du kannst noch keine Fahrzeuge lackieren nur weil du einen Malkasten für Wasserfarben besitzt.
Wir können dir leider keine Schulung geben , dazu fehlt uns auch die Zeit.
- So wie dir offensichtlich zum Lesen und Lernen fehlt.
.
.

Ich muss das Problem finden, sonst kann ich heute Nacht nicht schlafen

Lies die Grundlagen im Bett - dann kannst du auch gut schlafen :-)

lg
Stefan

— geändert am 22.09.2016 23:50:14

Liebe Grüße - Stefan
[ App - Entwicklung ]