# Praktikums Projekt Java vs MySQL



## Ranxus (10. Jan 2018)

Guten Morgen liebes Forum,

ich muss gestehen dies ist das erste mal das ich in einem Forum etwas poste sprich einen eigenen Beitrag verfasse daher habt bitte nachsehen sollte der Beitrag nicht hier reingehören. Kommen wir erst zu mir ich bin 21 Jahre alt und absolviere eine Ausbildung zum IT-Assistenten dort haben wir Programmieren als Unterrichtsfach. Die ersten 2 Jahre haben wir mit Java programmiert (OOP,GUI) jetzt im letzten Ausbildungsjahr haben wir angefangen mit MySQL zu arbeiten haben dort aber auch nicht wirklich viel praxisbezogenes gemacht eher trockene Theorie. Momentan befinde ich mich in einem Pflichtpraktikum was wir abschließen müssen um zu unserer Abschlussprüfung zugelassen zu werden. Dort habe ich von meinem Chef die Aufgabe erhalten ein Blenden Tool zu programmieren (das Praktikum findet in einem Online Handel für gebrauchte Computer Hardware statt) dieses Blenden Tool soll erst einmal ca 3000 Datensätze aus einer Excel Tabelle über eine CSV eingespeist bekommen dies allein ist schon ein großes Problem da wir im unterricht nie behandelt haben wie man Daten von extern importiert. Ich sollte erst einmal vielleicht das Programm an sich erklären. Erst einmal müssen die Datensätze übertragen werden danach sollte man die einzelnen Blenden in einem Suchfeld suchen können. Diese werden mithilfe eines sog. Blenden Codes realisiert. Dieser ist wie folgt zu verstehen jede Blende (hinten an den USB Ports, VGA Anschlüssen etc ist gemeint ) hat in der Regel eine andere Anordnung der Ports da es ja verschiedene Motherboard Hersteller gibt und an sich die Boards anders sind, es kann aber vorkommen das die Blenden mancher Hersteller Kompatibel miteinander sind. Deswegen hat mir die Firma das Projekt als Aufgabe bis zum ende des Praktikums gegeben. Nachdem man also den Blenden Code eingeben hat und die Suche gestartet hat sollen alle Blenden der unterschiedlichen Firmen die aber denselben Blenden Code haben ausgegeben werden. So wie ich es verstanden habe muss ich auch noch einen Zähler einbauen der die Anzahl der jeweiligen Blenden zufügt falls neue in den laden kommen oder abzieht falls welche verkauft werden. Außerdem muss ich das Programm danach so bearbeiten das der Endbenutzer also die Leute die damit arbeiten müssen leicht darauf zugreifen können. Ich bin momentan ehrlich gesagt etwas überfordert. Ich würde falls es irgendwie machtbar wäre das Tool mit MySQL schreiben da mir persönlich SQL wesentlich besser als Java gefällt. Aber ist das mit SQL überhaupt umsetzbar weil im großen und ganzen ist SQL doch ein Datenbanksystem und keine Programmiersprache wie Java wo mann halt alle Freiheiten hat.

Gruß Ranxus


----------



## mrBrown (10. Jan 2018)

Ich weiß nicht, ob das jetzt deine Frage ist: aber der übliche Weg wäre, sowohl Java als auch MySQL zu nutzen (wobei beide beliebig durch äquivalentes ersetzbar sind).


----------



## truesoul (10. Jan 2018)

Hallo.

Folgende Links sollten dir dabei helfen:


Lesen von Dateien
Datenbank nutzen
oder MySQL Datenbank nutzen
Vielleicht noch ein wenig Build-Management-Tool (Maven)
CVS Reader
Evtl. auch nach Object-relational mapping unter Java googlen

Grüße


----------



## Ranxus (10. Jan 2018)

Ersteinmal vielen dank für deine schnelle antwort 
Gibt es irgendwelche Websites wo man das nachschlagen kann wie mann beides miteinander verknüpft? Habe ehrlich gesagt nicht den Hauch einer Ahnung wie das gehen soll. 
Gruß Ranxus


----------



## Dukel (10. Jan 2018)

MySql ist ein DBMS. Ein Anwender möchte sicher nicht mit sql Befehlen arbeiten.
Du kannst mit Java ein Frontend für MySql schreiben und in MySql die Daten speichern und ausgeben.


----------



## Ranxus (10. Jan 2018)

Vielen dank für die Hilfe truesoul, 
werde ich mir gleich angucken
Gruß Ranxus


----------



## Ranxus (10. Jan 2018)

Hallo Dukel,
gibt es für MySQL keine Art Grafische Benutzeroberfläche wie in Java ?
Gruß Ranxus


----------



## truesoul (10. Jan 2018)

Ranxus hat gesagt.:


> gibt es für MySQL keine Art Grafische Benutzeroberfläche wie in Java ?



mysql workbench oder HeidiSQL oder oder oder


----------



## JStein52 (10. Jan 2018)

Ranxus hat gesagt.:


> dieses Blenden Tool soll erst einmal ca 3000 Datensätze aus einer Excel Tabelle über eine CSV eingespeist bekommen


Findet dieser Vorgang nur einmal statt oder wird das immer mal wiederholt ? Gibt es die entsprechenden DB-Tabellen in MySQL schon oder musst du dir noch überlegen wie die Excelspalten auf DB-Tabellen abzubilden sind ? Das wäre mal der erste Schritt. Falls der Vorgang nur einmal stattfindet würde ich dafür ein eigenes Tool machen (Java oder Python)und das ganze in die Datenbank schaufeln. Unabhängig davon machst du dann eine Java-Anwendung mit grafischer Oberfläche zum suchen, zählen und einpflegen von Änderungen bzgl. der Blenden.


----------



## Dukel (10. Jan 2018)

truesoul hat gesagt.:


> mysql workbench oder HeidiSQL oder oder oder



Diese sind eher für Administratoren / DB-Admins.
Als Frontend für einen Benutzer würde ich dies nicht nutzen.


----------



## Ranxus (10. Jan 2018)

ersteinmal danke für eure ganzen rückmeldungen hätte ich echt nicht erwartet das das so schnell geht. ^^ und so wie ich es verstanden habe werden keine weiteren blenden eingespeist nur die anzahl wird hoch oder runter gezählt weil die blende ja dann nachdem sie gesucht wurden mit einem weiteren knopf abgezogen werden und noch ein weiterer knopf für die zugabe zuständig ist.


----------



## JStein52 (10. Jan 2018)

Ok, dann mache dir doch zunächst mal einen Plan wie die Daten von Excel nach MySQL umgesetzt werden sollen.
Das ist dann mit Java oder Python (darfst du das verwenden bzw. kennst du es überhaupt ?) relativ fix umgesetzt.
Stichworte: JDBC, CSVReader und SQL (zum erstellen der Datenbank und der Tabelle(n) in MySQL.


----------



## truesoul (10. Jan 2018)

Dukel hat gesagt.:


> Diese sind eher für Administratoren / DB-Admins.
> Als Frontend für einen Benutzer würde ich dies nicht nutzen.



Es war nicht für Rede vom Client Benutzer. Ich bin davon ausgegangen, dass ein Client für MySQL gefragt wurde womit der TE tatsächlich administrativ arbeiten kann. 

@Ranxus
Ist das richtig oder meinst du tatsächlich was anderes? 

Grüße


----------



## Ranxus (11. Jan 2018)

@JStein52 Java schon hatten wir die ersten 2 Jahre im Programmierunterricht mit Python hatten wir nix zutun CSVReader auch nicht und was SQL angeht haben wir halt sehr viel Theorie gemacht die letzten Themen die wir vor dem Praktika behandelt haben waren Normalisierung sowie Funktionale Abhängigkeit. Gibt es diesbezüglich evtll Seiten die die Themen (JDBC und CSVReader) Tutorialmässig erläutern also von Anfang an ?
@truesoul Das Programm soll von den Pcs der Einsteller die hier arbeiten laufen sprich das Programm wird auf den Festplatten installiert oder was meinst du?

LG Ranxus


----------



## JStein52 (11. Jan 2018)

Ranxus hat gesagt.:


> was SQL angeht haben wir halt sehr viel Theorie gemacht


Aber du weisst wie du in MySQL eine Datenbank anlegst, wie du Tabellen definierst und du hast eine Idee wie du die Felder (Spalten) deiner Excel-Datei auf Datenbankfelder abbilden willst ?
Zu JDBC kannst du hier mal lesen: http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_24_001.htm
und CSVReader goggelst du einfach mal, da findest du bestimmt ein einfaches Tutorial das beschreibt wie man eine csv-Datei zeilenweise einliest und dann mit den gelesenen Feldern was macht


----------



## AndiE (11. Jan 2018)

> Das Programm soll von den Pcs der Einsteller die hier arbeiten laufen sprich das Programm wird auf den Festplatten installiert oder was meinst du?



Ich will mal zusammenfassen. Es gibt eine Excel-Datei, in der 3000 I/O-Blenden abgelegt sind, wobei jeweils einige davon den gleichen Blendencode haben, also miteinander kompatibel sind. Im Lager der Firma werden nun ausgebaute oder neue Blenden abgelegt und die Anzahl der Blenden in dieser Datei entsprechend aktualisiert. Es gibt eine Anzahl Monteure, die ein Tool bekommen sollen, mit deren Hilfe sie Blenden nach dem Blendencode suchen, diese entnehmen oder auch ausgebaute Blenden im Lager und der Datei ablegen können.

Ist das so richtig verstanden?

Wenn ja- Brauchst du ein Serverprogramm, auf dem die Datei bearbeitet wird, und Clientprogramme, mit denen die Monteure mit diesem Serverprogramm kommunizieren. Das Serverprogamm selbst wird erst mit deiner Datenbank kommunizieren. So würde ich das machen.


----------



## JStein52 (11. Jan 2018)

Nicht ganz. Er soll die Daten aus der Excel-Datei in eine MySQL-Datenbank übernehmen und dort dann damit weiterarbeiten.


----------



## Ranxus (12. Jan 2018)

Guten Morgen,
@AndiE Genau so meinte ich das aber würde das auch mit Java realisiert werden können ? Und wenn nein was für Serverprogramme eignen sich hierfür ?
@JStein52 Das mit MySQL ist keine Vorgabe ich habe halt bisher nur mit Java und MySQL mit was ich arbeite ist laut Praktikumschef egal.

Gestern abend sprach nochmal meine Praktikumschef mit mir und wollte jetzt das die Excel die importiert wird später nachdem sie bearbeitet wurde wieder exportiert wird damit man die dann auf Excel weiterbearbeiten kann. Denn Vorgang will er am besten mit einem Button realisiert haben hinzukommt noch, dass er einen neuen Button möchte der Umbucht sprich im Lager selbst also der ausgabe der Suche die Blenden einzeln Verteilen kann. Außerdem wollte er noch einen neue Kategorie wo drinsteht wie oft die Blende für das Motherboard verkauft wird damit man beim Umbuchen die Blenden gleich in die "Topseller" verschieben kann.

Ich muss ehrlich gesagt sagen das er sich zuviel über meine Kenntnisse vorstellt es ist wie gesagt nur ein Teil meiner Ausbildung und ich habe Programmierunterricht 4 1/2 h die Woche. Wenn jemand eine Idee hätte wie es rel. einfach zu realisieren wäre dann wäre ich dankbar für Ratschläge. 

LG Ranxus


----------



## truesoul (12. Jan 2018)

Ranxus hat gesagt.:


> Genau so meinte ich das aber würde das auch mit Java realisiert werden können ? Und wenn nein was für Serverprogramme eignen sich hierfür ?



Ja mit Java ist es möglich.
Ein Möglichkeit wäre https://projects.spring.io/spring-boot/

Mit PHP oder Node.js (JavaScript) ist es auch möglich. Und vielen anderen Sprachen.
Node.js könnte auch schon für diese kleine Anwendung ausreichen, wenn man JavaScript vielleicht besser beherrscht als Java.

Als Frontend kann man auf reines HTML5+CSS+JavaScript setzen.
Oder man nimmt Frameworks wie Angular, React oder Vue.js zum Beispiel.

Du solltest dich dann auch mit Http: Request und Response einlesen. Dann mit Datentypen wie JSON (REST) oder XML (Soap).

Benutzeroberfläche: 
Also meine Empfehlung wäre, das mit HTML5+CSS+JavaScript umzusetzen und wenn kaum oder keine Kenntnisse in diesen 3 Teilen dann mit Java Swing/JavaFX.

Backend:
Und als Serveranwendung auf Spring Boot zu setzen, wenn in JavaScript keine Kenntnisse vorhanden sind, ansonsten Node.JS

P. S Finde es aber auch schon Aufwendig für ein Praktikanten sich gleich mit DB, Backend und Frontend zu beschäftigen. 

Grüße


----------



## JStein52 (12. Jan 2018)

truesoul hat gesagt.:


> P. S Finde es aber auch schon Aufwendig für ein Praktikanten sich gleich mit DB, Backend und Frontend zu beschäftigen


Genau. Ich würde ihm auch deshalb nicht alle möglichen Techniken und Begriffe empfehlen sondern ihm sagen sich auf einen Java-Client mit Swing-Oberfläche und jdbc-Datenbankzugriff zu beschränken. Dieser Client läuft dann auf den PC's der Anwender und MySQL ist der Server. Er soll ja auch in einer überschaubaren Zeit damit fertig werden.
Und um sich langsam heranzuarbeiten meine Empfehlung zunächst mal ein Tool zu bauen das die Daten von Excel nach MySQL übernimmt. Das ist überschaubar und in ein paar Tagen gemacht. Damit arbeitet er sich in das Thema ein und kann anschliessend den Client mit grafischer Oberfläche entwickeln.


----------



## mrBrown (12. Jan 2018)

truesoul hat gesagt.:


> P. S Finde es aber auch schon Aufwendig für ein Praktikanten sich gleich mit DB, Backend und Frontend zu beschäftigen.


Pflichtpraktikum am Ende der Ausbildung - da finde ich das ehrlich gesagt angemessen. Das ist eine ziemlich simple Anwendung...



truesoul hat gesagt.:


> Dann mit Datentypen wie JSON (REST) oder XML (Soap).


Die Unterscheidung ist etwas ungünstig, für REST ist das Format egal und nicht auf JSON beschränkt.


----------



## truesoul (12. Jan 2018)

mrBrown hat gesagt.:


> Die Unterscheidung ist etwas ungünstig, für REST ist das Format egal und nicht auf JSON beschränkt.



Ja der Satz, so wie ich ihn geschrieben habe, ist natürlich falsch.

Sollte eher lauten so JSON und XML.
Und Soap und REST.



mrBrown hat gesagt.:


> Pflichtpraktikum am Ende der Ausbildung - da finde ich das ehrlich gesagt angemessen. Das ist eine ziemlich simple Anwendung...



Ja natürlich ist das eine simple Anwendung, für die jenigen die das schon öfters gemacht haben. 
Sagen wir es mal so, für dem TE könnte es aufwendig sein, wenn seine Praktikumszeit nicht besonders lang ist. 
Die wurde nicht erwähnt, zumindest habe ich diese nicht gefunden.


----------



## AndiE (12. Jan 2018)

Erstmal muss er das aber zu einem Entwurf machen, weil er ja auch mit dem Admin abstimmen muss.


----------



## truesoul (12. Jan 2018)

JStein52 hat gesagt.:


> Genau. Ich würde ihm auch deshalb nicht alle möglichen Techniken und Begriffe empfehlen sondern ihm sagen sich auf einen Java-Client mit Swing-Oberfläche und jdbc-Datenbankzugriff zu beschränken. Dieser Client läuft dann auf den PC's der Anwender und MySQL ist der Server. Er soll ja auch in einer überschaubaren Zeit damit fertig werden.
> Und um sich langsam heranzuarbeiten meine Empfehlung zunächst mal ein Tool zu bauen das die Daten von Excel nach MySQL übernimmt. Das ist überschaubar und in ein paar Tagen gemacht. Damit arbeitet er sich in das Thema ein und kann anschliessend den Client mit grafischer Oberfläche entwickeln.



Bei einer kurzen Praktikumszeit wäre die Variante die einfachste. Ich bin erstmal nicht darauf eingegangen wie was umgesetzt werden könnte. Aber das mit dem Tool macht natürlich Sinn. 

Nur wenn das Praktikum über mehrere Monate hinaus geht, ist es vielleicht nicht so gut, nach ein paar Tagen mit der Arbeit fertig zu werden. Wobei es natürlich auch Eindruck machen könnte.

Und wenn wir davon ausgehen dass das Praktikum über mehrere Monate geht und es für den Leiter in Ordnung geht, ist es sicher nicht falsch eine Spring-Boot Anwendung zu schreiben die als Server dann tatsächlich fungiert.

Besser früher mit dem alltäglichen zu beginnen und im Lebenslauf dann auch drin stehen haben, ich habe auch eine Serveranwendung geschrieben und dazu Frontend in HTML+JavaScript oder Swing. Und kenne mich mit JSON, XML, REST oder Soap aus.

Kommt bestimmt besser als "ich habe Java Swing mit MySQL" gemacht. 

Und es kommt sicher auch gut an, wenn man

Nur meine persönliche Meinung.

Grüße


----------



## JStein52 (12. Jan 2018)

@truesoul Prinzipiell hast du schon recht. Aber ich hatte ihn jetzt so verstanden dass er dafür nicht allzuviel Zeit hat und ausserdem diese ganzen für ihn neuen Begriffe ihn eher erschlagen als ihm helfen. Aber letztlich muss er abschätzen was für ihn richtig und wichtig ist.

Edit: der GAU wäre wenn er mit zu hochgesteckten Zielen beginnt und am Ende nichts wirklich fertig kriegt.


----------



## M.L. (13. Jan 2018)

Um mit Java auf Excel lesend/schreibend zuzugreifen gibt es z.B. Apache POI: https://poi.apache.org
Aber -ohne Java- mit Excel die Daten als .csv zu exportieren und dann in MySQL (und der MYSQL Workbench) zu importieren dürfte auch möglich sein.


----------



## Danloc (14. Jan 2018)

Hallo Ranxus,

meiner Meinung nach, wird es dich aktuell nicht an dein Ziel bringen, wenn du versuchst dir vorzustellen, mit welchen Techniken und wie genau du das Programm programmieren willst.
Auf diese Art und Weise, können es Leute angehen, die etwas mehr Erfahrung besitzen als du und die nicht von all den Fachbegriffen erschlagen werden (du bist gedanklich ein Schritt zu weit).
Ich denke, dein Problem liegt noch etwas weiter "vorne", die "Probleme" mit der Programmiersprache, syntax, logic usw. kommen später und lassen sich dann Stück für Stück in der Praxis lösen (In deinem Fall).

Da du kein ausgelernter Entwickler mit Berufserfahrung bist, musst du dich nicht nur um die Entwicklung eines Programmes kümmern, sondern dir gleichzeitig die dafür benötigten Techniken aneignen und anwenden.
*An dieser Stelle bist du aktuell* und damit du jetzt nicht "unter" gehst, muss du *das Projekt organisieren* und Stück für Stück angehen.

Ich erkläre einmal wie ich das meine und erläutere Beispielhalf, wie man es umsetzten könnte. Ggf. hast du auch schon einige dieser Schritte erledigt oder Andere Läute übernehmen Teile davon, wie z.B. "ein Administrator richtet die Datenbank ein". Aber gehen wir einfach mal davon aus, dass alles deine Aufgabe ist. Teile weg lassen wird der einfachste Part .

Schritt 1: Aufgabenstellung ausarbeiten
Kläre mit deinem vorgesetzten, was das das Programm *genau* können soll und schreibe es dir auf.
Wie wird es Bedient? Wie kommen Daten in das Programm? Welche Funktionen muss es haben? Wie soll es aussehen? Was soll es Können?

Schritt 2: Soll- /Ist Analyse
Wie wird aktuell gearbeiten und wie soll später mit deinem Programm gearbeitet werden?
Müssen Daten übernommen werden und in welchem Format liegen diese vor?
(Beispiel: Aktuell arbeitet ein Mitarbeiter mit einer Excel Tabelle. Später soll alles in einer Datenbank verwaltet werden. Soll von mehreren Arbeitsplätzen gleichzeitig gearbeitet werden? Wie kommen die Daten später in die Datenbank? können diese von Hand eingetragen werden oder muss das Programm immer wieder von Excel Tabellen gespeist werden?)

*Erst jetzt,* wenn dir genau klar ist, wie es am Ende funktionieren soll, kannst du anfangen dir gedanken zu machen, wie das ganze technisch umgesetzt werden könnte. 

Und jetzt wie schon gesagt, stück für stück ...

Nehmen wir an, es wird mit einer Datenbank umgesetzt (was auch üblich ist) und die Datenbank soll lokal auf einem einzigen Rechner installiert werden. Jetzt musst du dich eigentlich nur für ein Datenbanksystem, welches deinen Anforderungen entspricht entscheiden. In deinem Fall, würde ich MySQL nehmen. 

Jetzt kannst du damit anfangen, einen Teil deines Projektes umzusetzte! Nämlich die Datenbank zu installieren.
Nimm dir Bücher, Webseiten, Youtube usw. zur Hand und lese dir durch, wie so eine Datenbank einzurichten ist.

Wenn die Datenbank läuft, hast du schon einen Teil deines Projektes umgesetzt. Außerdem kannst du jetzt konkrete Fragen hier im Forum stellen, wenn du an einigen Stellen nicht weiter kommst. Du kannst ebenfalls anfangern zu experimentieren und rumzustesten.

Jetzt kannst du auch anfangen zu programmieren. Du musst dich eigentlich nur für eine Programmiersprache deiner Wahl entscheiden. Da du ja bereits etwas erfahrung mit Java hast und wir in einem Java forum sind, wird es wohl auch Java werden .

Die Vorgehensweise bleibt allerdings die gleiche ... Stück für Stück.
Nimm dir Bücher, Webseiten, Forum, Youtube usw.. und Fange klein an.
Bau erstmal eine Datenbankverbidnugn auf. Lese Daten aus der Datenbank. Schreibe etwas in die Datenbank.
Wenn du "kleine" Programmteile fertig hast, gehst du auf die gleiche weise vor, bis dein Programm zu der Funktionalität herangewachsen ist, die du am Ende erreichen musst.

Also das wäre ein Beispeil, wie ich an deiner Stelle ein solches Projekt umsetzten würde. Natürlich muss die genaue Vorgehensweise jeder für sich selbst herausfinden aber wenn du dir keinen "Plan" machst kannst du auch nicht Schritt für Schritt vorgehen, was in deinem Fall aber notwendig scheint, weil du ja alles gleichzeitig lernen musst. 

Solltest du an einigen Stellen Probleme haben oder nicht weiter kommen, kannst du Fragen viel gezielter stellen und ich bin sicher, hier ist immer jemand der dir helfen kann .

In diesem Sinne, viel Erfolg.

Gruß Danloc


----------



## Ranxus (17. Jan 2018)

@truesoul ich habe noch ca 2 1/2 Wochen Praktikum.
@M.L. vielen dank für den link ich glaube das könnte mir echt weiterhelfen. 
@Danloc ich wollte eig versuchen über eine ArrayList eine große Datenbank in Java aufzubauen bzw ich nicht weiss wie ich Java mit MySQL verbinde weil das Programm an sich wird ja auf die Datenbank zugreifen müssen.

Gruß Ranxus
PS: Vielen dank für eure ganzen tollen Ratschläge.


----------



## Danloc (17. Jan 2018)

Moin Ranxus,

ich glaube du musst erstmal verstehen, wie Daten in einer Datenbank gespeichern/verwaltet werden und wie das mit den Methoden und Propertys einer klasse zusammenspielt.   

Ob du in deinem Fall ein array benötigst, kann ich so nicht beurteilen. Der Gadenke, die Tabelle in Form eines arrays, im Programmcode zurechzubauen und das 1 zu 1 in die Datenbank zu schreiben, ist aber grunlegen falsch.

Wenn du Lust hättest, könen wir uns gerne mal über Skype, Discord, Teamspeak... unterhalten. (Nachmittags)
Ich werde dir keinen fertigen Code schreiben und dein Projekt zu ende bringen, kann dir aber mal etwas ausführlicher erklären wie das ganze zusammenspielt ggf. ne Datenbank installieren und ein paar Beispiel methode usw. mit dir schreiben, mit denen du dann anfangen und weiter arbeiten kannst.


----------



## mrBrown (17. Jan 2018)

Danloc hat gesagt.:


> Ob du in deinem Fall ein array benötigst, kann ich so nicht beurteilen. Der Gadenke, die Tabelle in Form eines arrays, im Programmcode zurechzubauen und das 1 zu 1 in die Datenbank zu schreiben, ist aber grunlegen falsch.


Er schrieb von ArrayList, nicht von Array 
(Und das wäre sehr nah an dem, womit ich auch anfangen würde...)


Bei der knappen Zeit würde ich auch erstmal gänzlich auf eine Datenbank verzichten und rein mit den CSV-Daten arbeiten.
@Ranxus mit JavaFX oder Swing hast du schon mal gearbeitet? Dann würde ich das ganze damit umsetzen, und mich nicht extra in Web-Entwicklung einarbeiten (oder ist es irgendwo anders spezifiziert?)


----------



## truesoul (17. Jan 2018)

Ranxus hat gesagt.:


> @truesoul ich habe noch ca 2 1/2 Wochen Praktikum.



Ja dann solltest du tatsächlich erstmal ohne DB arbeiten und mit das csv umsetzen. Swing oder Javafx. Und dann, wenn die Zeit noch reicht mit der DB.

Grüße


----------



## mrBrown (17. Jan 2018)

truesoul hat gesagt.:


> Swing ist Javafx.


Swing ist eben nicht JavaFX, das ist ziemlich unterschiedlich


----------



## truesoul (17. Jan 2018)

mrBrown hat gesagt.:


> Swing ist eben nicht JavaFX, das ist ziemlich unterschiedlich



Autokorrektur von Smartphone. Sollte oder heißen.


----------



## Danloc (17. Jan 2018)

> Bei der knappen Zeit würde ich auch erstmal gänzlich auf eine Datenbank verzichten und rein mit den CSV-Daten arbeiten.


Das würde ich aufgrund der Aufgabenstellung auf keinen Fall so machen! Ich denke es wird viel fehleranfälliger und sogar komplizierter wenn er keine Datenbank hat. So kann er sich eine Query schreiben die dann sauber mit IDs (in diesem Fall z.B die Artikelnummer) arbeitet.

Eine MySQL Datenbank ist in c.a 10 Minuten installiert. Einen benutzer anzulegen, sollte auch kein Hxenwerk sein. (Sogar wenn man keine Ahnung hat).

Er möchte später ja auch Artikel miteinandern vergleichen. Er soll ja die Artikelnummern, die zu den gehäuse passen ermitteln und den dazugehörigen Lagerbestand ausgeben. Ich denke spätesdens da ist eine Datenbank, und die Verwendung von SQL sehr Hilfreich (das wäre in einer CSV mit java deutlich umfangreicher...) und in 2 1/2 Wochen, ist das locker zu lösen.


----------



## truesoul (17. Jan 2018)

Danloc hat gesagt.:


> Das würde ich aufgrund der Aufgabenstellung auf keinen Fall so machen! Ich denke es wird viel fehleranfälliger und sogar komplizierter wenn er keine Datenbank hat. So kann er sich eine Query schreiben die dann sauber mit IDs (in diesem Fall z.B die Artikelnummer) arbeitet.
> 
> Eine MySQL Datenbank ist in c.a 10 Minuten installiert. Einen benutzer anzulegen, sollte auch kein Hxenwerk sein. (Sogar wenn man keine Ahnung hat).
> 
> Er möchte später ja auch Artikel miteinandern vergleichen. Er soll ja die Artikelnummern, die zu den gehäuse passen ermitteln und den dazugehörigen Lagerbestand ausgeben. Ich denke spätesdens da ist eine Datenbank, und die Verwendung von SQL sehr Hilfreich (das wäre in einer CSV mit java deutlich umfangreicher...) und in 2 1/2 Wochen, ist das locker zu lösen.



Na ja, er kann es auch erstmal mocken.
Die Datenbank sollte er aber nicht weglassen nur nicht zwingend damit beginnen.
Er muss ja erstmal die Daten aus der csv lesen können. Dann anzeigen und dann kann er sich mit der DB beschäftigen.

Wenn er viel Zeit mit der DB vergeutet und dann keine Zeit mehr hat für die GUI ist schlechter als wenn er csv auslesen und Anzeigen kann.


----------



## JStein52 (17. Jan 2018)

Bei der Frage Datenbank ja oder nein sehe ich eher das Problem dass das ganze nicht mehrbenutzerfähig wird wenn er mit einer Datei arbeitet. Am Ende gibt es 10 verschiedene csv- oder xls-Dateien mit unterschiedlichen Inhalten. Das wird das Chaos


----------



## mrBrown (17. Jan 2018)

Danloc hat gesagt.:


> Eine MySQL Datenbank ist in c.a 10 Minuten installiert. Einen benutzer anzulegen, sollte auch kein Hxenwerk sein. (Sogar wenn man keine Ahnung hat).


Wenn man nicht unnötigerweise MySQL nehmen würde, wäre es nicht mal Aufwand von Minuten...



Danloc hat gesagt.:


> Das würde ich aufgrund der Aufgabenstellung auf keinen Fall so machen


Da steht nichts von Datenbanken, also ist die in dem Punkt egal.



Danloc hat gesagt.:


> Das würde ich aufgrund der Aufgabenstellung auf keinen Fall so machen! Ich denke es wird viel fehleranfälliger und sogar komplizierter wenn er keine Datenbank hat. So kann er sich eine Query schreiben die dann sauber mit IDs (in diesem Fall z.B die Artikelnummer) arbeitet.


Kann er auch, wenn er alles in Java hat.
Muss halt nur sauber abstrahieren (was ich auch als Grundvoraussetzung für arbeiten mit DBs sehe (und als bewertender höher einschätze als irgendwas mit DBs gemacht zu haben)).



Danloc hat gesagt.:


> Er möchte später ja auch Artikel miteinandern vergleichen. Er soll ja die Artikelnummern, die zu den gehäuse passen ermitteln und den dazugehörigen Lagerbestand ausgeben. Ich denke spätesdens da ist eine Datenbank, und die Verwendung von SQL sehr Hilfreich (das wäre in einer CSV mit java deutlich umfangreicher...) und in 2 1/2 Wochen, ist das locker zu lösen.


Kann er genauso gut ohne DB.
Sogar leichter, da er keine DB beachten muss.



JStein52 hat gesagt.:


> Bei der Frage Datenbank ja oder nein sehe ich eher das Problem dass das ganze nicht mehrbenutzerfähig wird wenn er mit einer Datei arbeitet. Am Ende gibt es 10 verschiedene csv- oder xls-Dateien mit unterschiedlichen Inhalten. Das wird das Chaos


Mehrbenutzerfähigkeit kommt nicht in den Anforderungen vor 
Und wenn die Frage war, ob man das in SQL schreiben kann, kann man da ruhig etwas tiefer stapeln...


----------



## JStein52 (17. Jan 2018)

Ranxus hat gesagt.:


> Außerdem muss ich das Programm danach so bearbeiten das der Endbenutzer also die Leute die damit arbeiten müssen leicht darauf zugreifen können.





mrBrown hat gesagt.:


> Mehrbenutzerfähigkeit kommt nicht in den Anforderungen vor


Ich weiss, steht ein bisschen verklausuliert da. Aber trotz allem wird mir schlecht wenn ich mir vorstelle dass da einerseits mit Excel an den Daten rumgearbeitet wird, andererseits mit seinem Programm und das vielleicht noch auf mehr als einem PC. Und ich vermute mal das was er da machen soll soll ja nicht nur irgendwie laufen sondern soll auch in dieser Firma in der er sein Praktikum macht eingesetzt werden. Dann sollte es schon sicher handhabbar sein sonst bricht das Blendenchaos aus.
Ist aber alles ein bisschen Spekulation und wir wissen ja nicht so viel über die Anforderungen. Vielleicht gibt es in dieser Fa. sogar schon einen MySQL-Server und man muss nur ein bisschen Datenbank einrichten ???


----------



## Danloc (17. Jan 2018)

Ok, halten wir also fest, jeder hat seine ganz eigene Meinung dazu. 
Fakt ist allerdings, das man für so einen Fall üblicherweise Datenbanken benutzt. Dafür wurden sie erfunden. 
Wenn es also darum geht, dass er bei der ganzen Sache etwas lernt, sollte er es gleich "richtig" lernen. Eine Quick&Dirty Lösung, wird für seinen Anwendungsfall vielleicht mehr oder weniger gut funktioneren, wird ihm aber weniger Aufschluss darüber geben, wie Programme die mit Daten umgehen, im professionellen Umfeld entwickelt werden.



> Kann er auch, wenn er alles in Java hat.
> Muss halt nur sauber abstrahieren (was ich auch als Grundvoraussetzung für arbeiten mit DBs sehe (und als bewertender höher einschätze als irgendwas mit DBs gemacht zu haben)).


Natürlich kann er, aber üblicheriwese macht man so etwas mit SQL Querys. Da kann man auch nicht sagen "irgendwas in einem DBs machen". Das ist täglich brot für einen Entwickler und von der programmiersprache absoulut unabhängig. Ohne SQL kommt man nicht weit.

Lösen könnte man seine Aufgabe auch mit einem batch script, welche die Artikel in einer .txt datei speichert. Aber ob es darum wirklich geht ..


----------



## mrBrown (17. Jan 2018)

Danloc hat gesagt.:


> Fakt ist allerdings, das man für so einen Fall üblicherweise Datenbanken benutzt. Dafür wurden sie erfunden.
> Wenn es also darum geht, dass er bei der ganzen Sache etwas lernt, sollte er es gleich "richtig" lernen. Eine Quick&Dirty Lösung, wird für seinen Anwendungsfall vielleicht mehr oder weniger gut funktioneren, wird ihm aber weniger Aufschluss darüber geben, wie Programme die mit Daten umgehen, im professionellen Umfeld entwickelt werden.


Fakt ist, das Sätze, die mit "Fakt ist" beginnen, Unsinn sind.

Ich rede nicht von Quick&Dirty, sondern davon, wie man es richtig macht - eben mit sauberer Abstraktion.
Ob die Daten in einer Datenbank, in einer CSV oder gemockt vorliege, ist dann unerheblich und lässt sich beliebig austauschen.



Danloc hat gesagt.:


> Natürlich kann er, aber üblicheriwese macht man so etwas mit SQL Querys. Da kann man auch nicht sagen "irgendwas in einem DBs machen". Das ist täglich brot für einen Entwickler und von der programmiersprache absoulut unabhängig. Ohne SQL kommt man nicht weit.


"von der programmiersprache absoulut unabhängig" ist aber auch sauberes Design, und dann merkt man in der Anwendung nicht, ob da eine DB oder eine csv hinter sitzt.

Was mir dazu einfällt:


			
				Uncle Bob hat gesagt.:
			
		

> The database is just a detail that you don’t need to figure out right away.


https://8thlight.com/blog/uncle-bob/2012/05/15/NODB.html


----------



## JStein52 (17. Jan 2018)

Fakt ist doch dass @Danloc im konkreten Fall recht hat. Bei knapp 2 1/2 Wochen Zeit bleibt nicht viel anderes als sich hinsetzen und klären ob Datenbank oder nicht (mit seinem Praktikumsbetreuer) und das möglichst schnell. Wobei ich es auch so sehe dass Textdatei oder ähnlicher Firlefanz Quatsch ist, es geht ja nicht darum ob das theoretisch auch machbar wäre. Die UseCases aufschreiben (sind hier wahrscheinlich nur Daten anzeigen, Blendenanzahl verändern, Daten abspeichern). Soll auf mehreren PCs mit dem Programm gearbeitet werden, wie kann man das drohende Datenchaos vermeiden? Dann sich Gedanken machen wie die GUI dazu aussehen soll (am besten Prototyping mit einem GUI-Builder von NetBeans oder Eclipse) und dann beginnen und sich nicht ständig neue Begriffe und Techniken o.ä. reinziehen. Aber das war mein Vorschlag schon vor einer Woche. Und ich sach noch ...


----------



## mrBrown (17. Jan 2018)

JStein52 hat gesagt.:


> Fakt ist doch dass @Danloc im konkreten Fall recht hat.


Fakt ist doch, dass er nicht Recht hat, dass die Datenbank Zentral wäre  Kommt ja in deiner Ausführung auch nicht mal vor

Und Fakt ist eben auch, das Sätze mit "Fakt ist", Unsinn sind 



JStein52 hat gesagt.:


> Bei knapp 2 1/2 Wochen Zeit bleibt nicht viel anderes als sich hinsetzen und klären ob Datenbank oder nicht (mit seinem Praktikumsbetreuer) und das möglichst schnell. Wobei ich es auch so sehe dass Textdatei oder ähnlicher Firlefanz Quatsch ist, es geht ja nicht darum ob das theoretisch auch machbar wäre. Die UseCases aufschreiben (sind hier wahrscheinlich nur Daten anzeigen, Blendenanzahl verändern, Daten abspeichern). Soll auf mehreren PCs mit dem Programm gearbeitet werden, wie kann man das drohende Datenchaos vermeiden? Dann sich Gedanken machen wie die GUI dazu aussehen soll (am besten Prototyping mit einem GUI-Builder von NetBeans oder Eclipse) und dann beginnen und sich nicht ständig neue Begriffe und Techniken o.ä. reinziehen. Aber das war mein Vorschlag schon vor einer Woche. Und ich sach noch ...


Das ist der richtige Weg - und das ist alles unabhängig von einer Datenbank  Ob DB oder nicht ist dann nur noch eine Detailfrage


----------



## Meniskusschaden (17. Jan 2018)

Meines Erachtens ist gerade bei der InHouse-Programmierung für den Eigenbedarf eine vernünftig strukturierte DB das A und O. Mit teilweise vermurkster Software kann man da in der Regel ganz gut leben, aber die DB will man nicht mehr umbauen. Die DB ist da in der Praxis einfach das Zentrum der IT. Ich würde auf jeden Fall mit der DB anfangen und mich um den Datenimport kümmern. Dann hat man schon mal ein gut abgrenzbares Zwischenergebnis, auf dem notfalls der nächste Praktikant aufsetzen kann. Dabei sind auch die geringsten Schwierigkeiten zu erwarten. Danach würde ich einfach die Oberfläche programmieren und Kompromisse machen, um den Termin zu halten. Eine saubere Abstraktion im Vorfeld schafft ein Anfänger ohnehin nicht. Dann wird vermutlich gar nichts fertig.


----------



## mrBrown (17. Jan 2018)

Meniskusschaden hat gesagt.:


> Meines Erachtens ist gerade bei der InHouse-Programmierung für den Eigenbedarf eine vernünftig strukturierte DB das A und O. Mit teilweise vermurkster Software kann man da in der Regel ganz gut leben, aber die DB will man nicht mehr umbauen. Die DB ist da in der Praxis einfach das Zentrum der IT.


Ist das nicht ein Grund mehr, die DB nicht als erstes zu designen, sondern dann, wenn die Anforderungen an diese feststehen? 
(übrigens einer der Punkte aus dem verlinkten Artikel...)


----------



## JStein52 (17. Jan 2018)

Meniskusschaden hat gesagt.:


> Ich würde auf jeden Fall mit der DB anfangen und mich um den Datenimport kümmern. Dann hat man schon mal ein gut abgrenzbares Zwischenergebnis, auf dem notfalls der nächste Praktikant aufsetzen kann. Dabei sind auch die geringsten Schwierigkeiten zu erwarten. Danach würde ich einfach die Oberfläche programmieren und Kompromisse machen, um den Termin zu halten. Eine saubere Abstraktion im Vorfeld schafft ein Anfänger ohnehin nicht. Dann wird vermutlich gar nichts fertig.


Exakt !!!


----------



## Meniskusschaden (17. Jan 2018)

mrBrown hat gesagt.:


> Ist das nicht ein Grund mehr, die DB nicht als erstes zu designen, sondern dann, wenn die Anforderungen an diese feststehen?


Ja, die Gefahr, dass er die DB falsch strukturiert, besteht schon. Aber ich glaube, das würde ihm beim anderen Vorgehensmodell auch passieren. Ich halte es trotzdem für einfacher und anschaulicher, erst mal die nötigen Tabellen und deren Verknüpfungen zu erstellen. Dabei fallen Strukturfehler ja ganz gut auf, bevor er Arbeit in die Programmierung investiert hat. Generell plädiere ich in diesem Fall dafür, konkret zu beginnen und auf Probleme und Fehler wachsam zu reagieren und dadurch zu lernen.


----------



## mrBrown (17. Jan 2018)

Meniskusschaden hat gesagt.:


> Ja, die Gefahr, dass er die DB falsch strukturiert, besteht schon. Aber ich glaube, das würde ihm beim anderen Vorgehensmodell auch passieren.


Natürlich kann das passieren - aber ein am Ende eingebauter Fehler ist meist leichter zu beheben, als ein am Anfang eingebauter.



Meniskusschaden hat gesagt.:


> Ich halte es trotzdem für einfacher und anschaulicher, erst mal die nötigen Tabellen und deren Verknüpfungen zu erstellen.


Hab ich bisher anders erlebt  - die nötigen Tabellen und Verknüpfungen werden eben oft erst spät klar. 



Meniskusschaden hat gesagt.:


> Dabei fallen Strukturfehler ja ganz gut auf, bevor er Arbeit in die Programmierung investiert hat.


Viele Fehler fallen aber erst während der Arbeit damit auf, würde man durch den anderen Ansatz verhindern...


----------



## JStein52 (17. Jan 2018)

Hallo ... Von was redet ihr hier ? Ihr solltet bedenken, diese Daten stehen zur Zeit in einer Excel-Tabelle. Welche Tabellen und Verknüpfungen sollten da in der DB schon vorkommen ? Ein Tabelle "Blenden" ... fertig. Attribute sind wahrscheinlich so ziemlich 1:1 durch die Spalten der Exceltabelle vorgegeben


----------



## mrBrown (17. Jan 2018)

JStein52 hat gesagt.:


> Hallo ... Von was redet ihr hier ? Ihr solltet bedenken, diese Daten stehen zur Zeit in einer Excel-Tabelle. Welche Tabellen und Verknüpfungen sollten da in der DB schon vorkommen ? Ein Tabelle "Blenden" ... fertig. Attribute sind wahrscheinlich so ziemlich 1:1 durch die Spalten der Exceltabelle vorgegeben


Wir reden von Normalisierung und so, sollte jedem der was mit Datenbanken macht ein Begriff sein.
Grad weil die aus einer Exceltabelle kommen, braucht man das, dort stehen Daten so gut wie nie in passender Form drin (und wenn doch, hat man da die Verknüpfungen)


----------



## JStein52 (17. Jan 2018)

Ranxus hat gesagt.:


> Das Programm soll von den Pcs der Einsteller die hier arbeiten laufen sprich das Programm wird auf den Festplatten installiert


nur so nebenbei zum Thema mehrbenutzerfähig ...


mrBrown hat gesagt.:


> Wir reden von Normalisierung und so, sollte jedem der was mit Datenbanken macht ein Begriff sein.


Gerade wolltest du ihm noch verkaufen er solle das ganze doch in einer csv-Datei erledigen ? Da hat er auch nur eine Tabelle Blenden mit ihren diversen Spalten ...


----------



## Meniskusschaden (17. Jan 2018)

mrBrown hat gesagt.:


> Hab ich bisher anders erlebt - die nötigen Tabellen und Verknüpfungen werden eben oft erst spät klar.


Da haben wir wahrscheinlich einfach unterschiedliche Erfahrungen gemacht (oder die Grundlagen der verschiedenen Technologien in umgekehrter Reihenfolge gelernt). Ich schätze es bei meinem Ansatz, dass man - obwohl man bereits implementiert - beim Entwurf der DB noch sehr unabhängig von Implementierungsdetails arbeiten kann und einfach nur die Daten strukturiert, wie es (hoffentlich) richtig ist. Wenn man mit Textdateien beginnt, besteht z.B. die Gefahr, dass man nicht vernünftig normalisiert, weil man sich (als Anfänger vielleicht unbewußt) durch deren Limitierungen beeinflussen lässt. Wenn man zu früh mit der Programmierung oder dem Programmentwurf beginnt, besteht auch das Risiko, dass man fehlerhaft strukturiert, weil es für das aktuelle Detailproblem gerade einen scheinbar einfachen Weg gibt.
Grundsätzlich stimme ich dir natürlich zu, dass es ideal wäre, das Konzept im Vorfeld komplett fertig zu haben. Ich halte es hier - vor dem Hintergrund des Zeitfensters und der Vorkenntnisse - aber einfach für unrealistisch.


JStein52 hat gesagt.:


> Ihr solltet bedenken, diese Daten stehen zur Zeit in einer Excel-Tabelle. Welche Tabellen und Verknüpfungen sollten da in der DB schon vorkommen ? Ein Tabelle "Blenden" ... fertig. Attribute sind wahrscheinlich so ziemlich 1:1 durch die Spalten der Exceltabelle vorgegeben


Ich vermute ganz stark, dass das denormalisierte Daten sind und zusätzliche Tabellen nötig sind. Es ist ja offenbar sogar eine Bestandsführung vorgesehen und da ist schon die Frage, ob es genügt, einfach ein Mengenfeld im Blendenstammsatz fortzuschreiben. Normalerweise würde ich da schon Bewegungsdaten haben wollen. Es wird auch weitere Attribute geben, bei denen man sich überlegen muß, ob sie einfach frei eingegeben oder in einem eigenen Stammsatz definiert werden sollen. Dafür wären vielleicht Hersteller und Blendencode mögliche Kandidaten.


----------



## truesoul (17. Jan 2018)

Hallo allerseits,

bei manchen habe ich das Gefühl das die nie was in kurzer Zeit für einen Kunden entwickelt haben.
Jeder Kunde (und so sehe ich auch der Arbeitgeber des TE) will was angezeigt bekommen.
Und wenn dann der TE mit der Datenbank beginnt, und dann nach 1 1/2 Wochen feststellt dass die DB super steht und läuft aber dann feststellt dass nur noch 5 Tage für die Oberfläche, für das auslesen der Daten aus der Datei, für das Anzeigen/Bearbeiten der Daten (Stehts anfänglich gegen Mocks) übrig bleibt, das wird ein Spaß.

Und dann nach den 2 1/2 Wochen es heißt ja, ich habe die Datenbank total klasse Designed. Ich kann mich auch mit dieser über Java Verbinden, aber ich kann leider nichts anzeigen, da ich mit der GUI oder das auslesen nicht fertig geworden bin. Dann steht man ausgesprochen doof da.

Wenn man in größeren Projekten arbeiten, wo die Entwicklerteams unterschiedlich aufgeteilt sind in DB, Backend ("hier die DB") und Frontend warten auch nicht die Entwickler vom Frontend bis die Datenbank/Backend endlich Daten liefert.

Lieber erst die Oberfläche entwickeln, das auslesen der Datei implementieren und diese dann auch anzeigen und bearbeiten (Mock). Und dann weiß man auch wie die Datenbank auszusehen hat. Und in der Regel tauscht man eine Klasse aus. Die Mockimplementierung gegen die DB Implementierung.

Sorry, normalisierung bei dieser Aufgabe, ein bisschen übertrieben. Wenn die Daten in einer Exceltabelle stecken reicht es auch diese in der DB abzubilden.



Meniskusschaden hat gesagt.:


> Ich vermute ganz stark



Vermuten heißt nicht wissen. 



Meniskusschaden hat gesagt.:


> Ich vermute ganz stark, dass das denormalisierte Daten sind und zusätzliche Tabellen nötig sind. Es ist ja offenbar sogar eine Bestandsführung vorgesehen und da ist schon die Frage, ob es genügt, einfach ein Mengenfeld im Blendenstammsatz fortzuschreiben. Normalerweise würde ich da schon Bewegungsdaten haben wollen. Es wird auch weitere Attribute geben, bei denen man sich überlegen muß, ob sie einfach frei eingegeben oder in einem eigenen Stammsatz definiert werden sollen. Dafür wären vielleicht Hersteller und Blendencode mögliche Kandidaten.



Und ganz ehrlich, dass gehört alles nicht zur Aufgabenstellung.

Aufgabestellung lautet. Datei einlesen. Daten anzeigen. Daten bearbeiten. Datenbank einsetzen. Nichts mit, es könnten ja Händler und Stammsatz und und und ....

Bitte bedenkt. Praktikum. Sonst keine Praktische Erfahrung.

Grüße


----------



## JStein52 (17. Jan 2018)

Sehe ich genau wie @truesoul und auch @Meniskusschaden hat sich ja oben schon mal ähnlich geäussert. Und ich finde jetzt ist der TE dran endlich mal konkret zu werden falls er weitere Fragen hat


----------



## mrBrown (17. Jan 2018)

JStein52 hat gesagt.:


> nur so nebenbei zum Thema mehrbenutzerfähig ...


Spricht für Einzel-Benutzer 



JStein52 hat gesagt.:


> Gerade wolltest du ihm noch verkaufen er solle das ganze doch in einer csv-Datei erledigen ? Da hat er auch nur eine Tabelle Blenden mit ihren diversen Spalten ...


Nein, dann hat er Objekte etc, ob die aus der CSV kommen oder nicht ist wie gesagt egal.
Aber wenn man schon eine Datenbank nutzt, sollte man die Daten zumindest in ein passendes Format bringen. 

Eine Datenbank im gleichen Format wie die CSV ist völlig überflüssig...




truesoul hat gesagt.:


> Und ganz ehrlich, dass gehört alles nicht zur Aufgabenstellung.



Für ihn (und für mich auch) offensichtlich schon 




Meniskusschaden hat gesagt.:


> Da haben wir wahrscheinlich einfach unterschiedliche Erfahrungen gemacht (oder die Grundlagen der verschiedenen Technologien in umgekehrter Reihenfolge gelernt).


Das kann durchaus gut sein ;D



Meniskusschaden hat gesagt.:


> Ich schätze es bei meinem Ansatz, dass man - obwohl man bereits implementiert - beim Entwurf der DB noch sehr unabhängig von Implementierungsdetails arbeiten kann und einfach nur die Daten strukturiert, wie es (hoffentlich) richtig ist. Wenn man mit Textdateien beginnt, besteht z.B. die Gefahr, dass man nicht vernünftig normalisiert, weil man sich (als Anfänger vielleicht unbewußt) durch deren Limitierungen beeinflussen lässt. Wenn man zu früh mit der Programmierung oder dem Programmentwurf beginnt, besteht auch das Risiko, dass man fehlerhaft strukturiert, weil es für das aktuelle Detailproblem gerade einen scheinbar einfachen Weg gibt.


Das schätze ich auch  Nur schieb ich eben das Strukturieren der Daten für die Datenbank auf, bis sie im Programm strukturiert sind.
Wenn dabei im Programm mehrere Modelle heraus kommen, ist das kein Problem - man muss es am Ende nur in eine Datenbank-Repräsentation überführen.
Ob die Daten in der Textdatei liegen oder nicht ist da egal, auch die Normalisierung - weil das Programm eben unabhängig davon ist. Deshalb würde ich sogar erstmal einfach nur mit im Programm gemocken Objekten arbeiten, und das ersetzt man später durch die echte Datenquelle - ob CSV oder DB ist dann egal. 



Meniskusschaden hat gesagt.:


> vor dem Hintergrund des Zeitfensters und der Vorkenntnisse


Die beiden seh ich als Hauptproblem...


----------



## mrBrown (17. Jan 2018)

JStein52 hat gesagt.:


> Sehe ich genau wie @truesoul und auch @Meniskusschaden hat sich ja oben schon mal ähnlich geäussert.


Also ich les in euren drei Beiträgen drei verschiedene Ansätze 

Der letzte Beitrag von @truesoul ist quasi das Gegenteil von @Meniskusschaden...


----------



## JStein52 (17. Jan 2018)

mrBrown hat gesagt.:


> ist quasi das Gegenteil von @Meniskusschaden...


ich meine Post #43 von @Meniskusschaden

Edit: ... und bin jetzt erst mal raus, es sei denn es gibt neue Erkenntnisse/Fragen vom TE


----------



## truesoul (17. Jan 2018)

mrBrown hat gesagt.:


> Wenn dabei im Programm mehrere Modelle heraus kommen, ist das kein Problem - man muss es am Ende nur in eine Datenbank-Repräsentation überführen.



Meine Rede bzw mein Gedanke. Während der Entwicklung kommt raus, wie die Datenbank am Ende aussehen kann.


----------



## mrBrown (17. Jan 2018)

JStein52 hat gesagt.:


> ich meine Post #43 von @Meniskusschaden


Ich auch. Für mich sind die genau gegensätzlich. (Außer du siehst die Gemeinsamkeit da, dass beide mit etwas anfangen) 



truesoul hat gesagt.:


> Lieber erst die Oberfläche entwickeln, das auslesen der Datei implementieren und diese dann auch anzeigen und bearbeiten (Mock).


@truesoul: Erst Programm, dann DB.



Meniskusschaden hat gesagt.:


> Ich würde auf jeden Fall mit der DB anfangen und mich um den Datenimport kümmern.


@Meniskusschaden: Erst DB, dann Programm.


----------



## JStein52 (17. Jan 2018)

mrBrown hat gesagt.:


> Außer du siehst die Gemeinsamkeit da, dass beide mit etwas anfangen


Da sehe ich allerdings eine starke und wichtige Ähnlichkeit. Anfang der Woche waren es 2 1/2 Wochen Zeit. Falls der TE inzwischen noch nichts konkretes angefangen hat sind es jetzt noch 2 Wochen.


----------



## JStein52 (17. Jan 2018)

mrBrown hat gesagt.:


> Spricht für Einzel-Benutzer


Du hast aber schon bemerkt dass er dabei den Plural verwendet ?


----------



## mrBrown (17. Jan 2018)

JStein52 hat gesagt.:


> Du hast aber schon bemerkt dass er dabei den Plural verwendet ?


Den Smiley hast du schon überlesen? 
Excel ist auch Einzelnutzer, obwohl viele das auf ihrem Rechner installieren


----------



## JStein52 (17. Jan 2018)

mrBrown hat gesagt.:


> Den Smiley hast du schon überlesen?


Ok hatte ich tatsächlich nicht richtig interpretiert. Und eben weil alle ihre eigene ExcelDatei verwenden wird das ja vermutlich ein Anstoss für diese Arbeit sein.

Edit: wahrscheinlich haben zur Zeit alle Dateien namens EmilsBlenden.xls, OttosBlenden.xls, HugosBlenden.xls und irgendein Depp sitzt da und führt die einmal pro Woche zusammen


----------



## Meniskusschaden (17. Jan 2018)

Es ist natürlich insgesamt viel Spekulation im Thread. Vielleicht ist die Excel-Datei ja bereits eine perfekt normalisierte Lösung. Hier weiß ja höchstens einer, wie viele Tabellen die enthält.
Die Vielfalt der möglichen Lösungen macht es für den TE auch nicht unbedingt einfacher. Wahrscheinlich fährt er am besten damit, sich einfach für irgendeine zu entscheiden, anstatt zu versuchen, heraus zu finden, welche die beste ist.

Der Dissenz ist vielleicht auch nicht ganz so groß, wie er erscheint, weil sich auch die Diskussionen über das "grundsätzlich richtige" und das "noch machbare" vermischen. Ich finde z.B. das Mocking-Konzept grundsätzlich gut, glaube hier aber nicht mehr daran.



truesoul hat gesagt.:


> bei manchen habe ich das Gefühl das die nie was in kurzer Zeit für einen Kunden entwickelt haben.
> Jeder Kunde (und so sehe ich auch der Arbeitgeber des TE) will was angezeigt bekommen.


Ich verstehe das Argument, habe aber eher andere Erfahrungen gemacht. Ich glaube die Ursache ist, dass Arbeitgeber und Arbeitnehmer praktisch identische Interessen haben, was für Auftraggeber und Auftragnehmer sehr viel weniger gilt. Ich finde deshalb auch, dass Inhouse-Programmierung und Auftragsprogrammierung ganz unterschiedlich geführt werden müssen. Kommt aber auch darauf an, ob es ein "Inhaber-Chef" oder ein "Manager-Chef" ist. Ersterer interessiert sich dafür, ob es einen Fortschritt gab, Letzterer ob es wie ein Fortschritt aussieht.



truesoul hat gesagt.:


> Wenn man in größeren Projekten arbeiten, wo die Entwicklerteams unterschiedlich aufgeteilt sind in DB, Backend ("hier die DB") und Frontend warten auch nicht die Entwickler vom Frontend bis die Datenbank/Backend endlich Daten liefert.


Ja, aber ich finde den Maßstab für diese Aufgabe nicht angemessen.



mrBrown hat gesagt.:


> @truesoul: Erst Programm, dann DB.





mrBrown hat gesagt.:


> @Meniskusschaden: Erst DB, dann Programm.


Wenn man eine abgeschlossene Anwendung programmiert, kann man den ersten Weg gehen. Bei der Inhouse-Programmierung ist es aber doch meistens (außer bei der ersten Anwendung) ohnehin so, dass bereits große Teile der DB vorgegeben sind. Da kommt meines Erachtens hauptsächlich der zweite Weg vor.


----------



## truesoul (17. Jan 2018)

Meniskusschaden hat gesagt.:


> Ja, aber ich finde den Maßstab für diese Aufgabe nicht angemessen.



Was ich mit "Wenn man in größeren Projekten arbeiten, wo die Entwicklerteams unterschiedlich aufgeteilt sind in DB, Backend ("hier die DB") und Frontend warten auch nicht die Entwickler vom Frontend bis die Datenbank/Backend endlich Daten liefert." eigentliche meine ist, dass es ganz normal sein kann, ohne fertige Datenbanken zu beginnen.




Meniskusschaden hat gesagt.:


> Bei der Inhouse-Programmierung ist es aber doch meistens (außer bei der ersten Anwendung) ohnehin so, dass bereits große Teile der DB vorgegeben sind. Da kommt meines Erachtens hauptsächlich der zweite Weg vor.



Bei der Inhouse Entwicklung sehe ich es sehr ähnlich und habe auch Erfahrungen so gesammelt in der Inhouse Entwicklung. Nur speziell für diesen Fall ist es nicht gegeben. 

Ich hoffe für den TE das er jetzt nicht total Erschlagen ist von den ganzen Informationen.

Grüße


----------



## Meniskusschaden (17. Jan 2018)

truesoul hat gesagt.:


> Ich hoffe für den TE das er jetzt nicht total Erschlagen ist von den ganzen Informationen.


Ich vermute mal, dass wir seine letzten vagen Erfolgshoffnungen längst ruiniert haben.


truesoul hat gesagt.:


> Meniskusschaden hat gesagt.:
> 
> 
> > Ich vermute ganz stark
> ...


Es gibt also doch noch Hoffnung.


----------



## Danloc (17. Jan 2018)

Auch nachdem ich den gasammten Thread gelesen und nochmals drüber nachgedacht habe, kann ich der Lösung ohne Datenbank nichts abgewinnen. Wenn es darum gehen würde, Daten in eine CSV Datei zu speichern und dann zusammenpassende Daten auszugeben, bräuchte man meiner Meinung nach nichts Programmieren.
Das kann Excel schon von Haus aus! Es kann daten in csv abspeichern. Es kann die Daten sortiert anzeigen. Es kann mithilfe von formeln zusammenpassende Daten ausgeben (Ja sogar bunt!). Also wenn das wirklich Sinn und Zweck wäre, bräuchte man nur ein paar Excel Formeln...

Ob er nun mit der Datenbank anfängt oder erst die Oberfläche entwickelt, sei mal völlig dahingestellt. 

Also nochmal an den TE:
Ich hatte zu beginn geschrieben, dass du *GENAU* klären muss, was das programm können soll.
Das der Thread hier ausgeartet ist, sollte für dich keinesfalls ein Zeichen dafür sein, dass die Aufgabenstellung super kompliziert ist. Es zeigt einfach was passiert, wenn die Aufgabenstellung nicht 100% eindeutig ist. Denn viele Wege führen nach Rom!


----------



## mrBrown (17. Jan 2018)

Danloc hat gesagt.:


> Auch nachdem ich den gasammten Thread gelesen und nochmals drüber nachgedacht habe, kann ich der Lösung ohne Datenbank nichts abgewinnen.



Es geht um das Trennen von Datenbank und Programm - für viele ist das eines der Grundprinzipen guter Softwareentwicklung.
Weiter vorn ist ein Artikel verklingt, der das besser ausführt, als ich es könnte...



Danloc hat gesagt.:


> Wenn es darum gehen würde, Daten in eine CSV Datei zu speichern und dann zusammenpassende Daten auszugeben, bräuchte man meiner Meinung nach nichts Programmieren.
> Das kann Excel schon von Haus aus! Es kann daten in csv abspeichern. Es kann die Daten sortiert anzeigen. Es kann mithilfe von formeln zusammenpassende Daten ausgeben (Ja sogar bunt!). Also wenn das wirklich Sinn und Zweck wäre, bräuchte man nur ein paar Excel Formeln...


Was könnte denn deine Lösung mit Datenbank mehr, als meine ohne Datenbank? (und was wäre das mehr, als rein Excel?)
(Excel + Macros ist Turingvollständig, von daher ginge damit sowieso alles )


----------



## truesoul (17. Jan 2018)

Danloc hat gesagt.:


> Ob er nun mit der Datenbank anfängt oder erst die Oberfläche entwickelt, sei mal völlig dahingestellt.



Aber das wird der entscheidende Punkt sein. Warum habe ich schon geschrieben.


----------



## mrBrown (17. Jan 2018)

truesoul hat gesagt.:


> Und ohne Datenbank kommt ja nicht in die Tüte weil dann würde es nicht zur Aufgabenstellungen gehören.


Steht btw nicht in der Aufgabenstellung, zumindest nicht in dem Teil, der hier steht


----------



## Danloc (17. Jan 2018)

> Es geht um das Trennen von Datenbank und Programm - für viele ist das eines der Grundprinzipen guter Softwareentwicklung.


Bin ich ganz deiner Meinung, nur darum geht es nicht. Es geht darum, dass er Daten bearbeiten, anzeigen und nachhalten muss.
Ich bin mir vollends bewusst, dass es aus Sicht des Programmes egal sein sollte, wo die Daten nachgehalten werden. In diesem Fall also eine der zu erledigenden Aufgaben, das Programm so zu struktueren.

Das ändert aber nichts an der Tatsache, dass sich eine Datenbank, zum nachhalten der Daten, besser eignet.
In diesem Fall also die andere zu erledigende Aufgabe.



> Was könnte denn deine Lösung mit Datenbank mehr, als meine ohne Datenbank? (und was wäre das mehr, als rein Excel?)


- Multiuserbenutzung
- Ein enziger Datenstand (Es gibt ein zentrales System, keine Datenquellen mit ähnlichen oder anderen Datenstand, wie z.B. Datei1 auf PC12, Datei2 auf PC1 und Datei3 auf PC5)
- Unabhängig vom Betriebssystem, auf dem das Programm installiert ist, Excel ist ein Microsoft Produkt! (z.B. mit Datenbank-Server)
- Bessere und zentrale Wartbarkeit
- Gewährleistung der Ausfallsicherheit ist leichter herzustellen
- Der user muss die Daten nicht physykalisch auf seiner Festplatte zur Verfügung stellen, er kann vom Stand aus mit der Datenbank verbinden
- Eine Datenbank kann nach belieben erweritert werden

Außerdem ist das Format der Daten in einer Datenbank klar definiert. Es kann nicht einfach vom user geändert oder gar gelöscht werden. Eine Excel Tabelle ist schnell einmal umformatiert, Datensätze hinausgelöscht oder gar vollständig gelöscht.

es gibt sicherlich noch sehr viele Dinge, ganz zu schweigen von Funktionen, die je nach Datenbank von bereitgestellt werden. Auch die Auswertung der Daten, gestaltet sich deutlich einfacher.

Ich habe nichts dagegen, wenn jemand so etwas in einem "Profi" Thread zur Sprache bringt und ausdiskutiert. Allerdings wurde dem TE zu beginn ein Softwaremodell vorgeschlagen und so dargestellt, als würde es absoulut keinen Unterschied machen, ob die Daten in einer csv Datei gespeichert sind oder in einer Datenbank und das ist grundlegend falsch!


----------



## truesoul (17. Jan 2018)

mrBrown hat gesagt.:


> Steht btw nicht in der Aufgabenstellung, zumindest nicht in dem Teil, der hier steht



Stimmt, wurde vom TE in Erwägung gezogen.
Edit: Und von daher würde ich nicht zwingend sagen, dass die Aussage falsch ist.


----------



## truesoul (17. Jan 2018)

Ich wette gleich wird Sharepoint in den Raum geworfen wegen einziger Datenbestand 

Und btw muss man für Makro's auch schon wieder vba beherrschen. Wenn es komplizierter werden soll. Und Aufzeichnung von Makros ist kein entwickeln.


----------



## Danloc (17. Jan 2018)

> Ich wette gleich wird Sharepoint in den Raum geworfen wegen einziger Datenbestand




Der TE, stellt eine Frage zu einem Anfänger-Praktikumsprojekt und löst eine Grundsatzdiskussion über das Zusammenspiel von Datenbanken und Softwarekonzepten aus 

Er geht bestimmt zu seinem Chef und sagt: "Die Aufgabe ist unlösbar!!"


----------



## truesoul (17. Jan 2018)

Ach mit Sicherheit oder er hat sich bestimmt eine unter die binde gekippt und denkt nach in die Klapse zu gehen.


----------



## mrBrown (17. Jan 2018)

Danloc hat gesagt.:


> Bin ich ganz deiner Meinung, nur darum geht es nicht.


Natürlich geht es darum (mir zumindest).



Danloc hat gesagt.:


> - Multiuserbenutzung
> - Ein enziger Datenstand (Es gibt ein zentrales system, keine Datenquellen mit ähnlichen oder anderen Datenstand, wie z.B. Datei1 auf PC12, Datei2 auf PC1 und Datei3 auf PC5)
> - Unabhängig vom Betriebssystem, auf dem das Programm installiert ist, Excel ist ein Microsoft Produkt! (z.B. mit Datenbank-Server)
> - Bessere und zentrale Wartbarkeit
> ...



Gefühlt jeden dieser Punkte kann man auch negativ aufschreiben 

- Es braucht zusätzlich eine dedizierten Server
- keine OS und DB-Unabhängigkeit mehr (eine csv kann auf jedem System geparsed werden, aber nicht jede Db bietet die gleichen Features oder ist System-Unabhängig)
- komplexere Wartbarkeit (Server + Datenbankserver + im Idealfall Webserver vor der Datenbank + Netzwerk + ...) 




Danloc hat gesagt.:


> Ich habe nichts dagegen, wenn jemand so etwas in einem "Profi" Thread zur Sprache bringt und ausdiskutiert. Allerdings wurde dem TE zu beginn ein Softwaremodell vorgeschlagen und so dargestellt, als würde es absoulut keinen Unterschied machen, ob die Daten in einer csv Datei speicher oder in einer Datenbank und das ist grundlegend falsch!


Für die grundlegende Programmfunktionalität *ist es egal*.
Für den Entwicklungsprozess *ist es egal*.
Für das Design *ist es egal*. ...

Die Anforderungen sind eben nicht "Design ein passendes Datenbankschema", sondern das schreiben der Anwendung.
Für mich als Bewertenden ständen da ganz andere Dinge im Vordergrund, als das Datenschema - zB sowas wie Anforderungsanalyse, Entwurf, ...

MMn legt ein "du musst die Daten erstmal in MySQL importieren" sogar genau den falschen Fokus, weg von den relevanteren Dingen.


----------



## JStein52 (17. Jan 2018)

Und wieder ist ein Tag seiner Praktikumszeit vorbei ...


----------



## Meniskusschaden (17. Jan 2018)

Danloc hat gesagt.:


> Er geht bestimmt zu seinem Chef und sagt: "Die Aufgabe ist unlösbar!!"


Auch wenn er in diesem Thread sonst noch nichts gelernt haben mag, dann doch zumindest, dass Overengineering eine reale Gefahr darstellt, die dazu führen kann, dass man am Ende mit leeren Händen da steht.
Es ist oft die bessere Entscheidung, einen dreckigen Ansatz zu wählen, weil man für die Umsetzung einfach viel weniger Know How braucht. Ob die Lösung jemals so groß wird, dass man vom prinzipiell besseren Weg überhaupt jemals profitiert, steht auch in den Sternen.


----------



## Meniskusschaden (17. Jan 2018)

JStein52 hat gesagt.:


> Und wieder ist ein Tag seiner Praktikumszeit vorbei ...


Um vielleicht doch mal wieder etwas Konkretes vorzuschlagen: Ich würde ja ohnehin mit der DB beginnen. Der TE hat geschrieben, dass er sich mit SQL etwas sattelfester fühlt, als mit Java. Deshalb würde ich es in seinem Fall also erst recht so machen. Ich würde mich dabei auch nicht nur auf die Datenhaltung beschränken, sondern die gesamte Logik in SQL abbilden und nur einen ganz schlichten Java-Client für das GUI programmieren.


----------



## Meniskusschaden (17. Jan 2018)

Darüber hinaus würde ich die Vor- und Nachteile des Lösungsansatzes benennen und die Entscheidung eben mit den Vorteilen begründen. Dann spielt es für die Bewertung kaum eine Rolle, ob es die richtige Entscheidung war.

Ausserdem würde ich einen einfachen Stufenplan erstellen (z.B. DB-Schema erstellen, Datenimport, Logik entwickeln, GUI entwickeln). Dann hat sein Betreuer auch eine Chance, ihm eine akzeptable Note zu geben, wenn er nicht komplett, sondern nur in einzelnen Punkten fertig wird.

Das würde ich ohne Geschwafel ganz schlicht und banal halten. Hauptsache man sieht, dass es einen Plan gibt.


----------



## truesoul (18. Jan 2018)

Also ganz ehrlich die Diskussion warum Excel + Makros besser sein soll als eine DB ist total .... 

Ich kann leider keine Umfrage starten aber ich wette die große Mehrheit ist für eine DB.



mrBrown hat gesagt.:


> Gefühlt jeden dieser Punkte kann man auch negativ aufschreiben
> 
> - Es braucht zusätzlich eine dedizierten Server
> - keine OS und DB-Unabhängigkeit mehr (eine csv kann auf jedem System geparsed werden, aber nicht jede Db bietet die gleichen Features oder ist System-Unabhängig)
> - komplexere Wartbarkeit (Server + Datenbankserver + im Idealfall Webserver vor der Datenbank + Netzwerk + ...)



Das sind aber nicht viel mehr Contra's. Und auch ganz ehrlich sehr wenig überzeugend wie ich finde.

Oder wer meint noch so alles das Excel + Makros die bessere Lösung ist anstatt DB?


----------



## mrBrown (18. Jan 2018)

truesoul hat gesagt.:


> Also ganz ehrlich die Diskussion warum Excel + Makros besser sein soll als eine DB ist total ....


Das Excel + Macros besser sein soll, als eine DB hat doch auch niemand behauptet.

@Danloc fand nur Excel und Javaprogramm+Daten aus CSV lesen gleichwertig ^^


----------



## Ranxus (22. Jan 2018)

Guten Morgen liebes Forum,

seit letzter Woche habe ich meines Erachtens eine menge geschafft sprich das Grundgerüst des Programms steht soweit. Zu den aufgaben des Programms eine CSV-Datei (Ich habe es momentan so gelöst das ich die csv in eine txt Datei umwandle) wird importiert. Dann kann man sich wenn man einen Blenden Code einfügen und per Button Suchen alle Ergebnisse die mit dem gesuchten Code übereinstimmen werden dann in einem Ausgabefenster eingefügt. Wird ein falscher Code eingegeben, kommt eine Fehlermeldung der sagt es gäbe keine Übereinstimmung. Soweit ist das Programm erst einmal lauffähig ich hab meinem Chef das Programm gezeigt und er meinte er möchte das man nicht den gesamten Text für die Suche eingeben muss, Sprich anstatt 1-2-5-2-6-1-6-2 würde schon 1-2-5 oder 1-6-2 reichen. Ich meinte zu ihm das dadurch natürlich dann auch verschiedene Blenden ausgegeben werden könnten aber er möchte es so. außerdem möchte er einen neuen Button namens Umbuchen. Letzte Woche meinte ich ja dass das Umbuchen Manuell per Button und txtfeld Eingabe funktionieren soll. Dies möchte mein Chef jetzt aber doch Automatisch sprich man muss nur noch den Button Umbuchen drücken und schon werden von alle Blenden die in der importieren CSV enthalten sind und den gleichen Code haben die Blenden die eine Anzahl höher als 1 besitzen auf gleiche blenden die 0 mal vorhanden sind verteilt. Soweit so gut, meine Fragen sind momentan die folgenden 1. funktioniert das mit der Aufstückelung überhaupt weil im Grunde wird doch eine Datei die z. Bsp. in einem Array abgespeichert wird immer als ganzes aufgerufen sprich ich kann die Datei/Variable nicht so einfach Zerstückeln oder ? Frage 2 Apache POI ist ja ein Java Tool um Microsoft Dateien einzulesen gibt es dafür ein Tutorial was den Java Editor betrifft ? Es gibt viele Videos bezüglich POI die nutzen aber alle Eclipse was mir nicht viel bringt da ich nie damit gearbeitet habe. Frage 3 Gäbe es noch andere Möglichkeiten eine CSV einfach zu importieren/exportieren.Momentan Habe ich das importieren so gelöst das ich im Quellcode immer den namen der CSV (momentan ja txt.datei) auf den das Programm zugreifen soll verändern muss.

Finde es echt klasse das ihr versucht mir zu helfen.

lg Ranxus


----------



## Ranxus (22. Jan 2018)

Anbei die momentane grafische Oberfläche


----------



## Ranxus (26. Jan 2018)

Guten Tag Forum,
Ich habe mein Programm soweit lauffähig nur der Import funktioniert nicht so wie er soll. Hat jemand evtll. einen Lösungsvorschlag. Anbei sind Ausschnitte meines Programmes. Hoffe ihr könnt mir dabei vielleicht noch einmal helfen.

LG Ranxus


----------



## mrBrown (26. Jan 2018)

Dein Einlesen hat ja auch keinen Nebeneffekt, wie soll man da auch was von sehen?
Lass dir doch die Bücher (warum denn plötzlich Bücher?) nach dem Einlesen einfach mal anzeigen


(Und bitte niemals System.gc nutzen)


----------



## Trjavnamen (30. Jan 2018)

Wenn man eine CSV Datei eimal mit Exel öffnet und speichert werden Informationen über den Aufbau abgespeichert Damit ist die CSV datei gleichzeitig exportiert und importiert.Dann schau mal den LInk an da wird direkt in die CSV Datei (ist eigendlich eine Textdatei mit Komma oder Semikolon als Feldende/anfang und Zeilenumbruch als Datensatzende/anfang) geschrieben. https://www.csvreader.com/java_csv_samples.php https://www.csvreader.com/java_csv_samples.php


----------



## Trjavnamen (30. Jan 2018)

Ps: Die CSV Datei muß in einem Verzeichnis stehen auf die Java zugreifen darf


----------



## JStein52 (30. Jan 2018)

Trjavnamen hat gesagt.:


> ... öffnet und speichert werden Informationen über den Aufbau abgespeichert


was meinst du da ? Welche Informationen über den Aufbau werden in die CSV-Datei geschrieben ?

Edit: wie @mrBrown schon geschrieben hat, in dem aufgeführten Beispielcode sieht man natürlich nichts weil ja nichts ausgegeben wird. Der Code selber sieht ja richtig aus und tut was er soll: zeilenweise einlesen, die Zeile beim ";" splitten und aus den Bestandteilen ein Objekt vom Typ Book erzeugen. Aber das ist ja sicher nur ein Beispiel und nicht sein Code denn er will ja Blenden handlen ..


----------



## Trjavnamen (30. Jan 2018)

Ich meine  Exel speicher in den Eigenschaften der Datei informationen ab über Zeilenbreite und Überschrift und trennungsart.


----------



## JStein52 (30. Jan 2018)

Trjavnamen hat gesagt.:


> Ich meine Exel speicher in den Eigenschaften der Datei informationen ab über Zeilenbreite und Überschrift und trennungsart.


Nein, tut es nicht.Es speichert die Zeile mit den Spaltenüberschriften falls in Excel überhaupt vorhanden genau so "comma separated" ab wie die Daten.
Edit: und sein Beispielcode war schon richtig. Der hat funktioniert. Den muss er nur noch für seinen Dateiinhalt anpassen.


----------



## mrBrown (30. Jan 2018)

JStein52 hat gesagt.:


> Nein, tut es nicht.Es speichert die Zeile mit den Spaltenüberschriften falls in Excel überhaupt vorhanden genau so "comma separated" ab wie die Daten.


Wobei man da unterscheiden muss zwischen Speichern als CSV und als "normale" Excel-Datei, wenn ich mich nicht irre wird eine geöffnete CSV bei erneuten Speichern standardmäßig als XLS(?) gespeichert


----------



## JStein52 (30. Jan 2018)

mrBrown hat gesagt.:


> wenn ich mich nicht irre wird eine geöffnete CSV bei erneuten Speichern standardmäßig als XLS(?) gespeichert


Dann ist es aber auch keine CSV-Datei mehr. Also Nebenkriegsschauplatz. Das Thema beim TE sind CSV-Dateien. Punkt.


----------

