Kleine "Datenbank"

  • Antworten:27
  • OffenNicht stickyNicht beantwortet

02.01.2013 22:13:04

Hallo Leute,
ich bin neu hier aber das soll nichts entschuldigen und wahrscheinlich gibt es die Antwort zu meine Frage schon irgendwo im www.
Aber bevor ich den Googlefrust bekomme versuche ich es mal hier.

Ich hab mich mal an einer kleine APP versucht. Die APP dient zur Berechnung der erforderlichen Leistung für Drehmaschinen.
Habe bis dato nicht brauchbares im Market-Place gefunden.

Meine APP tut es nun auch nach dem Studium einiger tutorials und nach einigen trial&error versuchen.

Ok nun mein Problem.
Einer der Faktoren bei der Leistungsberechnung ist die spezifische Schnittkraft und diese wiederum ist Materialabhängig.
Also würde ich gern eine Materialauswahl in meiner APP integrieren.
Da es aber hunderte von Materialien gibt die wiederum gruppiert werden können wäre mein Lösungsansatz folgender.

Die Materialien in Excel gruppieren und dort auch weitere Eigenschaften definieren. (Excel kann selbst ich).
Nun meine Frage.....
Wie bekomme ich die Daten aus Excel in eine Java (bzw. xml)- Struktur gespeichert und wie kann ich auf diese dann von meiner APP aus zugreifen ?

Ich wäre für Anregungen, andere Lösungsvorschläge, kleine Programmierbeispiele sehr dankbar.

Gruß,
Rolf

02.01.2013 22:39:33

Hallo Jörg,
vielen Dank erstmal. Ich werde es mal probieren. Wenn ich dann die Excel-Tabelle als xml Datei habe weiß ich zwar immer noch nicht so genau wie ich von der APP aus auf diese xml Datei zugreife. Bin ein ziemlicher Newbie...sorry.
Ich habe zwar viele Programmiersprachen hinter mir muß aber leider feststellen, dass das ganze trotz mehr Komforts nicht wirklich einfacher wird.

Da war mir Print "Hello World" noch am liebsten :-)

Naja, versuch macht kluch.


However danke erstmal.
Gruß,
Rolf

03.01.2013 00:05:45

Wenn es sich um "hunderte" Materialien handelt, aus denen du in der App auswählen willst, dann würde ich dir ebenfalls zu einer Datenbank raten.

Die Daten kannst du trotzdem in Excel erstellen, wenn dir das am meisten liegt, Tools wie etwa Sqliteman können sowohl .csv als auch "MS Excel XML" importieren.

Tutorials zu Datenbank-Handling findest du im Netz zuhauf, daran sollte es also nicht scheitern.

03.01.2013 20:56:30

Hallo Leute,
vielen Dank für eure Antworten und Anregungen.
Also ich denke die "Datenbank" wird max. 500 Datensätze groß werden. Je Datensatz werden 3 Strings und 5 doubles benötigt.
Bin mir nicht sicher ob ich dafür ne wirkliche Datenbank brauche. Vor allem habe ich mit echter Datenbankprogrammierung (MySQL) o.ä. noch überhaupt keinen Kontakt hatte. Ich will ja meinen alten Kopf nicht überbelasten ;-)
Ich denke ich gehe den Weg csv -> WinAnwendung -> xml.
Sollte doch keine Ewigkeit dauern, dann in der app, einen xml-Datensatz von max. 500 rauszufiltern.
Dann muß ich nur noch rausfinden wie ich die xml-Datei in meine app einbinde und auf diese zugreifen kann.
Vermutlich werden einige von euch darüber schmunzeln, aber ich bin halt Anfänger in der Androidprogrammierung und aller Anfang ist bekanntlich schwer.

Trotzdem danke,
Rolf

03.01.2013 23:13:19

Eine SQL-Abfrage geht schon bedeutend schneller als ein xml zu durchsuchen. Gerade wenn Du mit Filtern arbeiten willst, dann könnte das eine langweilige Geschichte werden.

Man muss auch keine SQL Statements kennen, Android macht das einem sehr einfach. Wobei das auch nur eine einfache Tabelle wäre.
Hier ein kurzes Tutorial:
http://www.vogella.com/articles/AndroidSQLite/article.html

Wenn Du mit einer Datenbank arbeiten willst (was wirklich zu empfehlen ist), erstelle am besten eine Option eine CSV einzulesen und arbeite diese Zeile für Zeile ab und schreibe diese in die Datenbank. Das sollte nicht schwer sein und dürften nur ein paar Zeilen sein.
Eine XML auszulesen finde ich persönlich schwieriger als eine CSV und dürfte auch langsamer sein.

Nachtrag:
Beachte auch, dass lange Ausführungen die Activity blockieren. Wenn Du mit einer xml arbeitest kann schnell der Dialog kommen, ob Du die App abschießen willst, wenn Du den Programmcode nicht in einem eigenem Threat laufen lässt. Eine SQL Abfrage geht dagegen so schnell, dass man die nicht merkt und ist denk ich leichter als mit Threats zu arbeiten.

— geändert am 03.01.2013 23:27:32

04.01.2013 20:56:12

Hallo Andy,
vielen Dank für den Input. Also werde ich mir mal das Tutorial reinziehen und mich an der Datenbank versuchen.
Vielen Dank auch für den Link.

@alle: Ich muß sagen ich habe bisher wenige Foren erlebt wo man soviel wirklich kompetente Hilfe bekommt. :):):)
Hut ab !
Eine Frage noch die sicherlich hier nicht hin gehört.
Ich bin bisher noch nicht wirklich dahinter gestiegen wie der Debugger in Eclipse funktioniert.
Ich kann zwar Haltepunkte setzen, aber wie ich mir dann Variablen etc. anschauen kann hab ich bisher noch nicht geblickt.
Wäre dankbar für einen kleinen und vermutlich entscheidenden Hinweis.

Bis denne,
Rolf

04.01.2013 23:08:02

Eine Frage noch die sicherlich hier nicht hin gehört.

Warum nicht?


Ich kann zwar Haltepunkte setzen, aber wie ich mir dann Variablen etc. anschauen kann hab ich bisher noch nicht geblickt.

Hm, das funktioniert genauso wie zB in Netbeans oder Visual Studio: App im Debugger starten (also nicht "run as" sondern "debug as" benutzen), wenn die Ausführung auf einen Breakpoint läuft, dann wechselt Eclipse in die Debug-Perspektive, in der du dann den betreffenden Source siehst, und auch ein Fenster "(x)= Variables"; meistens funktioniert auch das Überfahren der gewünschten Variablen im Sourcecode mit der Maus.

Oder meintest du etwas anderes?

05.01.2013 12:23:29

ja das meinte ich, aber irgendwie hat es bei mir so nicht funktioniert.
Wollte es gerade nochmal testen aber irgendwie geht heute gar nichts. Wenn ich die app starte, egal ob im debug modus oder als run as startet der emulator aber dann bleibt eclipse mit der konsolenmeldung "[2013-01-05 12:16:18 - TechCalculator] Waiting for HOME ('android.process.acore') to be launched..." hängen. Ich nehme an die Rückmeldung vom Emulator fehlt.
Hmmmm erstmal sehen wie ich das in den Griff bekomme.
Dann werde ich nochmal den debugger testen.....

Update: Jetzt hat es funktioniert. k.a. was ich vorher falsch gemacht habe
Danke !

— geändert am 05.01.2013 13:13:57

05.01.2013 23:22:41

Du kannst Dein Telefon verwenden wie den Emulator. Debugging in den Einstellungen Deines Telefons aktivieren, Telefon über USB anstecken und jetzt sollte das ADT das Telefon erkennen und Du kannst Deine Apps aufs Telefon laden und debuggen. Wenn es gerootet ist, kannst Du auch über den File Explorer auf die Daten der App zugreifen.
Wenn Du Beispielsweise den Ort (GPS) manipulieren willst, musst Du das zuerst in den Einstellungen aktivieren.
Aus Sicherheitsgründen sollten man die Debughing-Option wieder abschalten, wenn man sie nicht braucht.

Den Emulator kann man aber auch gut verwenden, auch wenn er nur frickelig funktioniert. Am besten startet man den Emulator zu Beginn, dann spart man sich das lange Warten. Wenn ich auf Debug gehe, wird meisten der AVD auch nicht erkannt. Wenn ich aber zuerst die App mit Run... ausführe und dann nochmal mit Debug, kann geht es komischer Weise.

06.01.2013 12:28:22

Danke für die Tip's. Ich habe dummerweise nur ein USB-Kabel und das habe ich auf der Arbeit. Ich denke ich sollte mir mal ein zweites zulegen :-).
Ich habe auch festgestellt das es besser ist den Emulator laufen zulassen.
Zur Zeit kämpfe ich mit der Datenbank. Habe es immerhin schon geschafft eine Datenbank anzulegen. Nun muß ich nur noch rausfinden wie ich wieder an die Daten komme, weil sonst hilft sie mir nicht wirklich :wacko:

06.01.2013 18:14:37

Hallo Leute,
ich hab jetzt alles was ich für mein Projekt brauche.

-Datenbank anlegen
-Werte aus der Datenbank filtern und lesen

Das hat mir geholfen .....//de.wikibooks.org/wiki/Googles_Android/_Datenbankzugriffe ..... ich darf noch keine Links einbinden :(

Das weiter oben aufgeführte Tutorial war doch ziemlich verwirrend für einen Newbie.
Wie auch immer, der nächste Schritt wäre nun die CSV-Datei in eine Datenbank umzuwandeln.

Dazu müßte ich die CSV-Datei irgendwie in das Projekt einbinden damit ich von meiner App drauf zu greifen kann.

Die dann, mit der App erzeugte db, müßte ich dann in mein ursprüngliches Projekt einbinden.

Wäre dankbar für ein Tip wie ich die oben genannten Dateien von Eclipse aus in das Projekt einbinden kann.

Danke schonmal

06.01.2013 18:52:46

Du kannst die Datei in das Projekt einbinden (ich glaube die kommt dann in den Ordner res/raw und kann mit R.raw geladen werden) oder über den Explorer (DDMS View) zum Beispiel auf die SD Karte kopieren und von da aus laden.

06.01.2013 19:06:11

Danke Andy für die schnelle Antwort.

ich wollte diese Daten mit openRawResource() öffnen aber scheinbar habe ich da irgendein Paket nicht installiert.

import android.content.Res; <-- diese klasse fehlt mir.

Weiß jemand welches Paket ich dazu installieren muß ?

06.01.2013 19:18:13

Erm...
Warum willst du denn temporär die csv einbinden, um daraus dann eine DB zu erzeugen, die dann letztendlich eingebunden werden soll?

Entweder der Plan ist, die DB erst beim User zu erzeugen (was hier wenig Sinn machen würde), oder das die App mit einer fertigen DB daher kommt.

Im 2. Fall kannst du die csv am PC in eine DB importieren und die dann beilegen (wobei das je nach Größe auch nicht unbedingt optimal ist).

Oder übersehe ich gerade irgend etwas?

06.01.2013 19:34:53

Nö du übersiehst nicht. Ich wollte einfach zu Übungszwecken mal ne app schreiben die aus der csv ne db macht. Ich weiß das ist :girl: -ly like.

Mein problem vom letzten Post hat sich auch erledigt. Wer googeln kann ist klar im Vorteil :D