# Java programm mit Datenbank für Anfänger



## chipsy40 (15. Jun 2010)

Hi Zusammen,

erstmal muss ich sagen, dass so n Forum wirklich ne super Sache ist.
Ich hoffe Ihr könnt mir auch ein wenig helfen.
Um folgendes gehts:

Wir haben bei uns in der Abteilung ein Programm, in VB geschrieben, das auf eine Access Datenbank aufsetzt. Da dieser Entwickler verstorben ist und niemand den Quellcode besitzt wurde ich gefragt, wie immer bei EDV-technischen Problemen ;-)
Mein Chef hat mich nun gefragt, ob ich es hinbekomme, dieses Programm neu zu schreiben.

Das Programm soll folgende Eigenschaften besitzen:

- Es soll auf eine Datenbank zugreifen
- Mehrere User sollen zeitgleich damit arbeiten (2-3 User maximal)
- Optisch soll das Programm mehrere Reiter besitzen
- Man soll Personendaten erfassen können
- Mit diesen Personendaten soll dann im Hintergrund gerechnet werden und ein Ergebnis angezeigt werden
- Einzelne Daten sollen als csv exportierbar sein oder noch besser direkt in SAP exportiert werden


So das wäre mein erster Foreneintrag.
Hat jemand Lust mich bei diesem Projekt ein wenig zu unterstützen, ich hatte bisher nur in der Uni ne Java Vorlesung, daher bräuchte ich Hilfe.

Ist mein Vorhaben überhaupt mit Java umsetzbar?

Ich bin für jede Antwort dankbar, möcht meinem Chef beweisen, dass ich das irgendwie hinbekomme 

Danke.

Viele Grüße

Daniel


----------



## ARadauer (15. Jun 2010)

> Ist mein Vorhaben überhaupt mit Java umsetzbar?


ja definitiv


----------



## chipsy40 (15. Jun 2010)

Puh da bin ich schonmal erleichtert.
Ich würde ungern einen extra Datenbankserver aufsetzen, wie könnte ich das Projekt denn angehen?


----------



## ARadauer (15. Jun 2010)

> Mehrere User sollen zeitgleich damit arbeiten (2-3 User maximal)





> Ich würde ungern einen extra Datenbankserver aufsetzen,


Wiederspricht sich das nicht... die user werden ja die selbe db verwenden müssen... die installation einer mysql db ist doch keine hexerei... mit xampp.. 2 minuten...


----------



## chipsy40 (15. Jun 2010)

Ah ok das wusste ich nicht.
Wir haben hier im Unternehmen Netzlaufwerke auf die alle zugreifen können.
Kann ich hier einfach die mysql-Datenbank unter einem Ordner installieren?
Sorry hab sowas noch nie gemacht.


----------



## srea (15. Jun 2010)

Ich glaube er meint, das er die alte Access-Datenbank für die neue Applikation benutzen möchte.
EDIT: Ok, anscheinend doch nicht =)

Ich weiss ja nicht wie fit du in Java bist, da du sagst du hattest nur in der Uni eine Vorlesung geh ich mal von Grundkenntnissen aus. Ich würde dir empfehlen deine angesprochenen Berechnungen und das einfügen von Benutzerdaten in die Datenbank als Konsolenapplikation zu schreiben und wenn das Problemlos läuft kannst du eine GUI drüber legen. Ist dann nicht mehr so ein Act.
Wie die Situation Java->SAP ist kann ich leider nicht sagen...


----------



## Niki (15. Jun 2010)

srea hat gesagt.:


> Wie die Situation Java->SAP ist kann ich leider nicht sagen...



Das sollte sich mit einem WebService gut realisieren lassen. Genau für sowas sind sie da. Muss halt jemand auf SAP Seite ein WebService zur Verfügung stellen.


----------



## chipsy40 (15. Jun 2010)

Hey Danke schonmal für die Antworten.
Konsolenprogrammierung???
In der Uni haben wir immer nur objektorientiert Programmiert.
Oh man ich muss das hinbekommen?
Meint Ihr das mit dem Server funktioniert auf userem Netzlaufwerk?


----------



## srea (15. Jun 2010)

chipsy40 hat gesagt.:


> Konsolenprogrammierung???
> In der Uni haben wir immer nur objektorientiert Programmiert.


 Ich meinte einfach, das du erstmal die grafische Oberfläche weglassen sollst. Konsolenprogramm hat nichts mit Objektorientiert oder nicht zu tun.
Ist auch nur meine Meinung wie man als Anfänger an so Programme rangehen sollte, da scheiden sich bestimmt die Geister...



> Oh man ich muss das hinbekommen?


Mach dir kein Stress, das bekommst du schon hin. 
Fang erstmal an, das du ein kleines Progrämmchen schreibst, mit dem du auf die Datenbank zugreifst. Dann kannst du Benutzereingaben in die Datenbank einfügen und als nächstes deine Berechnungen implementieren. So in etwa würde ich das angehen.



> Meint Ihr das mit dem Server funktioniert auf userem Netzlaufwerk?


Darfst du denn nicht die alte DB benutzen? Da sollte doch dann schon alles so sein, wie du es brauchst?!


----------



## Niki (15. Jun 2010)

Konsolenprogrammierung bedeutet, dass die Benutzereingabe über die Konsole (cmd-Fenster) gemacht wird und nicht über ein GUI.
Können sich die Benutzer mit den Daten in die quere kommen (können zwei Benutzer zur selben Zeit den selben Datensatz bearbeiten). Wenn ja wäre vermutlich ein kleiner Server notwendig. Das würd das ganze dann etwas komplizierter machen. Ansonsten sollte es schon machbar sein. Wie lange gibt dir dein Chef dafür Zeit? Wenn du keinen Stress hast ist es ein gutes Projekt zum Lernen.


----------



## chipsy40 (15. Jun 2010)

Also danke erstmal.
Zeit habe ich bis Ende des Jahres.
Ich denke das müsste genug sein oder?
Ok dann versuch ich erst mal ein einfaches Programm zu schreiben und dann melde ich mich hier wieder, damit ich weiß wie man den Datenbankzugriff bewerkstelligen kann.
Aber nochmal an alle, wie würdet ihr vorgehen an meiner stelle?
Bin für jeden Tipp dankbar.


----------



## eliot (15. Jun 2010)

Für mich hört sich da sehr nach einer Web Applikation an (Stichwort JSF).
Das hat den Vorteil, dass du gleichzeitige Zugriffe auf gleiche Datensätze
besser handeln kannst. Bei Rich Client Anwendungen mit mehreren Clients solltest
du vermeiden, dass mehrere Clients direkt auf die DB zugreifen
(sondern über einen selbst implementierten Java Server, der die Daten für die aus der Db zur
Verfügung stellt (z. B. über Web Services)).


----------



## eliot (15. Jun 2010)

srea hat gesagt.:


> Ich meinte einfach, das du erstmal die grafische Oberfläche weglassen sollst. Konsolenprogramm hat nichts mit Objektorientiert oder nicht zu tun.
> Ist auch nur meine Meinung wie man als Anfänger an so Programme rangehen sollte, da scheiden sich bestimmt die Geister...
> 
> 
> ...



Naja, Access ist nicht gerade eine Vorbild DB.
Ich würde MySql oder Postgres empfehlen, und die bestehenden Daten aus Access importieren
Für den DB Zugriff würde sich Hibernate + EJB 3 anbieten (Dann funktioniert der Krahm später auch mal
in einem Application Server).


----------



## Niki (15. Jun 2010)

JSF für jemanden der noch nie wirklich mit Java in Berührung gekommen ist? Das setzt weit mehr als nur Grundkenntnisse voraus da es da in Richtung JEE geht. Man sagt dass man ca. 1-2 Jahre braucht, um mal mit der JSE fit zu sein, danach mind. noch mal 1-2 Jahre für die Enterprise Basics. Das wird sich wohl bis Ende des Jahres nicht ausgehen, vor allem wenn er niemanden hat der ihm die Sachen beibringen kann. Ist aber nur meine Meinung.

EDIT:
Ich glaube nicht dass diese Anwendung so riesig werden soll. Das geht dann sonst in Richtung "mit Kanonen auf Spatzen schießen".


----------



## maki (15. Jun 2010)

Als DB Server hast du ja schon MySQL & PostgreSQL genannt bekommen, möchte da noch den MS-SQL Server einwerfen,weil der oft in Betrieben schon läuft, von Access kann ich auch nur abraten.

Würde dir entweder zu einem Swing Client, oder SWT (bzw. sogar Eclipse RCP) Client raten, WebApps sind nochmals um einiges komplizierter.
Zugriff auf die DB gibt es entweder per nackigem JDBC, ein bisschen abstrakter mit iBatis, oder gleich ein komplexes ORM wie JPA mit Hibernate bzw. EclipseLink, allerdings sind ORM anfangs sehr schwierig zu erlernen.


----------



## chipsy40 (15. Jun 2010)

Also danke für die ganzen abkürzungen 
habe nochmal nachgefragt, der gleichzeitige zugriff auf die datenbank soll gegeben sein, jedoch soll bei gleichzeitigem zugriff auf datensätze eine fehlermeldung kommen.
also kann ich das programm xampp nutzen?
läuft das auf unserem netzlaufwerk?


----------



## maki (15. Jun 2010)

Du brauchst doch kein XAMPP... ein RDBMS Server reicht schon aus.


----------



## ARadauer (15. Jun 2010)

Also ich würds mal für den Anfang auf die Basics beschränken. Swing Client der direkt über JDBC mit der Datenbank kommuniziert. Das ist mal am einfachsten. Am Client eine saubere Service/Dao Schicht beachten, dann kann man das später immer noch auf einen Server auslagern oder Hibernate verwenden.

1. xampp installieren, dann läuft mal die mysql
2. mit phpmyadmin eine Testtabelle mit Testdaten anlegen (zb Kunden)
3. mal lesen was MVC ist
4. lesen was ein DAO ist
5. Datenklasse und DAO ersellen und mit jdbc die Kunden auslesen und auf der Konsole darstellen
6. Gui erstellen um die Kunden in einer JTable darzustellen 

Nach diesen 6 Schritten hast du deine erste kleine Java Swing Datenbank Anwendung, bin mir sicher, dass du das bis Freitag Nachmittag gebacken bekommst... bei Problemen einfach fragen..


----------



## ARadauer (15. Jun 2010)

maki hat gesagt.:


> Du brauchst doch kein XAMPP... ein RDBMS Server reicht schon aus.



stimmt, mysql tuts auch... aber ich finde xampp gemütlich, da dann schon phpmyadmin läuft und einen webserver kann man immer brauchen ;-)


----------



## chipsy40 (15. Jun 2010)

Ok aber nochmal meine Frage, kann ich das Xampp auch einfach auf dem Netzlaufwerk installieren?unter einem ordner?
und den dann für die späteren nutzer freigeben?
oder ist das zu ressourcenfressend?


----------



## maki (15. Jun 2010)

ARadauer hat gesagt.:


> stimmt, mysql tuts auch... aber ich finde xampp gemütlich, da dann schon phpmyadmin läuft und einen webserver kann man immer brauchen ;-)


Auch wieder richtig 
Allerdings sollte sich der TS nciht gleich auf Apache & PHP stürzen


----------



## Mr. (15. Jun 2010)

Hi,

ich glaube dein Verständnis von Xampp ist etwas falsch 

Du denkst noch in MSAccess Relationen. Hier hattest du eine einfache Datei, die du editieren konntest mit hilfe von MS Access. 

Nun hast du aber eine Serveranwendung. Die Installierst du auf einem Server (entweder vor Ort, oder über Remotezugriff). Diese (MySQL) ist dann über die ServerIPAdresse:3306 erreichbar.

Das heist du verweist in deinem Programm nicht mehr auf eine Datei sondern auf eine DB in einer Serveranwendung.

Ich hoffe ich habe es einfach genug ausgedrückt...

Grüße


----------

