Fragen zur Datenspeicherung

niceWork

Mitglied
Schönen Vormittag.

Ich hätte mal eine eher allgemeine Frage zur Datenspeicherung in Programmen.
Für größere Anwendungen ist es mir völlig logisch, dass die Daten zumeist (auch da meist viele Daten vorhanden sind) in einer beliebigen Datenbank gespeichert werden. Wie verhält es sich aber üblicherweise bei kleinen bzw. Kleinstprogrammen?

Ein Beispiel: Ich möchte für die Arbeit eine kleine Desktop-App entwickeln, die das Ablaufdatum unserer Notfallmedikamente speichert, welche ich zuerst eingebe und dann stets aktuell halte. Ein paar Wochen vor Ablauf des Medikaments soll die App mir eine Info anzeigen, dass ich wieder Nachschub besorgen muss. Aber extra dafür eine Datenbank? Gibt es vielleicht "schlankere" Möglichkeiten?

Danke für eure Inputs :)

Beste Grüße
Christian
 
K

kneitzel

Gast
Also generell bedeutet eine Datenbank nicht mehr Arbeit. Libraries wie Hibernate machen das alles extrem einfach (Aber man muss es halt kennen).

Aber man kann auch andere Formate nutzen. So kann man als Anfänger, wenn an möglichst wenig an neuen Technologien lernen möchte, z.B. die Daten per ObjectOutputStream speichern und per ObjectInputStream wieder einlesen. Diese binary Serialisierung kommt aber auch mit gewissen Nachteilen, weshalb sie in der Software Entwicklung eigentlich keine wirkliche Rolle spielt.
XML und JSON sind dann noch zu nennen. Da gibt es dann auch entsprechende Libraries, die die Serialisierung für einen machen.
Das wird dann auch genutzt um komplexere Dokumente zu speichern dann aber zum Teil als ZIP verpackt.

Also je nachdem, wo du hin möchtest, wäre die Nutzung einer Datenbank durchaus angebracht (Das muss keine extra installierte Datenbank sein. Es gibt "embedded" Datenbanken, so dass Du nur die Applikation selbst hast. H2, HSQLDB, SQLite, ...

Wenn Du aber mehr Anfänger bist und dies eine erste Applikation wird für Dich und Du nicht viel Zeit mit neuen Technologien zubringen möchtest: Dann nutz ruhig erst einmal den genannten ObjectOutputStream / ObjectInputStream zu Speichern und Laden deiner Daten. Dann hast Du schnell erste Erfolge und Du kannst das ja dann mit der Zeit verfeinern und erweitern.

(Da würde ich dann aber auch XML und JSON außen vor lassen. Da wären sonst auch Libraries zu nutzen, die da eine Komplexität mit rein bringen. Aber generell würde ich vor Komplexität nicht zurück schrecken, denn ein Ziel sollte immer sein, auch Neues dazu zu lernen.)
 

httpdigest

Top Contributor
Bevor du über die Entwicklung einer eigenen Anwendung nachdenkst, überlege vielleicht einmal, ob für deinen Anwendungsfall nicht einfach Excel, Access oder OpenOffice eine bessere Alternative wäre. Ich habe schon einige einfache Anwendungen für simple Datenerfassung gesehen und geschrieben und im Nachhinein dabei immer festgestellt: ja, man hätte das auch sehr viel schneller und wartbarer mit einer einfachen Tabellenkalkulationssoftware realisieren können. Zum Beispiel einfach ein Medikament pro Zeile und eine Spalte für das Ablaufdatum und einen Spaltenfilter für "Datum minus heute innerhalb von zwei Wochen". Fertig.
Mit einer eigenen Anwendung hast du immer das Problem, dass diese sowieso irgendwann obsolet wird bzw. nicht mehr gewartet wird, wenn die Person, die sie mal geschrieben hat, das Unternehmen wieder verlässt. Der Invest, den ein Unternehmen eingeht, wenn es sich dazu entschließt, Unternehmensprozesse mit selbst geschriebener Software zu unterstützen, darf niemals unterschätzt werden.
 

temi

Top Contributor
Bevor du über die Entwicklung einer eigenen Anwendung nachdenkst...
Das ist völlig korrekt, besonders, wenn es um so eine eher einfache Anwendung geht.

Allerdings hängt das natürlich von deinen Beweggründen für diese Anwendung ab. Brauchst du nur dringend eine Verwaltung für die Notfallmedikamente, dann gilt der Einwand von @httpdigest.

Geht es dir darum Java zu lernen und du suchst dafür eine sinnvolle Aufgabe, die dir dann auch noch im Alltag hilft, dann mach das gerne.
 

niceWork

Mitglied
Hi zusammen!

Ich danke euch für eure Tipps.
Tatsächlich geht es mir nur um Training in Java. Im Grunde haben wir das auch so wie von httpdigest schon vorgeschlagen, gelöst. Ich gebe dir in jeder Hinsicht recht. Mir geht es nur darum, mit Java etwas zu machen. Ich bin Anfänger, und möchte einfach Theorie in Praxis umsetzen. Und dieses Programm erscheint mir jetzt nicht zu schwer für den Anfang, ich kann nach Lust und Laune immer weiterbasteln und hat einen Praxisbezug für mich, was es mir viel leichter macht.

Ich werde mir die Tipps von JustNobody zu Herzen nehmen und mich mal langsam aber sicher daran machen. :)
 
K

kneitzel

Gast
Dann führe doch einmal aus, wie die Blockchain Technologie hier angewendet werden könnte oder sollte.

Ansonsten ist der Beitrag relativ sinnlos und der Aufwand für so einen Beitrag einen neuen Account anzulegen schlicht verschwendet.

Wenn du an meinem Beitrag was auszusetzen hast: dann ergänze ihn, äußere Deine Sicht. Ich erinnere mich, dass du die binary Serialisierung in der Vergangenheit so sehr geschätzt hast (ohne dafür aber jemals Argumente zu bringen...).
 
K

kneitzel

Gast
Ernsthaft? Es wurde ja vieles nicht erwähnt, aber auf Blockchain zu kommen... Du hast schon gelesen, um welche Daten es hier geht?
Oh, zerreiss die Idee doch nicht, ehe er sie etwas ausgeführt hat. So werden wir nie erfahren, ob es sich um reines Bullshit Bingo handelte oder er sich etwas gedacht hat ....

Aber für den TE einfach mal ein Link, der etwas zu Blockchain aussagt: http:://www.computerwoche.de/a/amp/blockchain-was-ist-das,3227284

Die einfache Beschreibung / Übersicht hilft evtl., um schnell entscheiden zu können, ob diese Technologie in Frage kommt oder nicht...
 

temi

Top Contributor
Ich persönlich würde mir für diesen Fall mal die CSV-Datei ins Auge fassen. Die lässt sich auch für Anfänger, ohne spezielle Bibliotheken, einfach handhaben und es gibt auch viele Beispiele (Stichworte: BufferedReader und FileReader) im Netz (und auch hier im Forum).

Toller Vorteil wäre folgender: Excel kann CSV sowohl lesen, als auch schreiben. Du kannst also die Daten relativ leicht aus der vorhandenen Datenbasis importieren (oder auch umgekehrt).

Zweiter Vorteil: Die CSV-Datei ist auch für Menschen einfach lesbar (ist ja ne Textdatei), so dass man leicht kontrollieren kann, ob das Speichern funktioniert. Und für das Lesen, kann man auch einfach mal eine Testdatei von Hand erstellen.
 
Zuletzt bearbeitet:

White_Fox

Top Contributor
CSV wollte ich auch vorschlagen. Nach bisherigem Stand würde ich sagen, es ist die beste aller Möglichkeiten (selbst wenn es nicht unbedingt ein simples Übungsprojekt wäre, wäre die Wahl definitiv nicht schlecht).
 
B

BestGoalkeeper

Gast
Hier ist mal eine minimales Json-Beispiel in weniger als 100 Zeilen; und zugegeben, die Eingabe könnte besser sein... aber dann landet man schnell bei der von @httpdigest vorgeschlagenen Tabelle:
Java:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import javax.swing.JOptionPane;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class Medis {

	public static class Medi implements Comparable<Medi> {
		public static final SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance();
		static {
			sdf.applyPattern("dd.MM.yyyy");
		}
		public String name, zusatz;
		public String zugelegtAm, verbrauchtAm;
		public int status = 1;

		public Medi() {
			Date d = new Date();
			this.name = "n";
			this.zusatz = "z";
			this.zugelegtAm = sdf.format(d);
			this.verbrauchtAm = sdf.format(d);
			this.status = 1;
		}

		public Medi(String name, String zusatz, String zugelegtAm, String verbrauchtAm, int status) {
			this.name = name;
			this.zusatz = zusatz;
			this.zugelegtAm = zugelegtAm;
			this.verbrauchtAm = verbrauchtAm;
			this.status = status;
		}

		public int getDif() {
			try {
				return (int) Math.round((sdf.parse(verbrauchtAm).getTime() - new Date().getTime()) / (1000.0 * 60.0 * 60.0 * 24.0)) + 1;
			} catch (ParseException e) {
				e.printStackTrace();
			}
			return -1;
		}

		@Override
		public int compareTo(Medi o) {
			return this.getDif() - o.getDif();
		}

		@Override
		public String toString() {
			return String.format("Medi [name=%s, zusatz=%s, zugelegtAm=%s, verbrauchtAm=%s, verbrauchtIn=%s, status=%s]", name, zusatz, zugelegtAm, verbrauchtAm, this.getDif(), status);
		}

	}

	private static final File file = new File("meds.txt");
	private static ArrayList<Medi> meds = new ArrayList<>();

	public static void main(String[] args) throws IOException {
		Gson gson = new Gson();

		if (file.exists()) {
			try (FileReader r = new FileReader(file)) {
				meds = gson.fromJson(r, new TypeToken<ArrayList<Medi>>() {
				}.getType());
			}
		}

		while (true) {
			String j = gson.toJson(new Medi());
			String s = JOptionPane.showInputDialog("Neu:", j);
			if (s == null) {
				break;
			}
			Medi m = (Medi) gson.fromJson(s, Medi.class);
			meds.add(m);
			System.out.println("Veraucht in Tage: " + m.getDif());
		}

		try (PrintWriter w = new PrintWriter(file)) {
			gson.toJson(meds, w);
		}

		Collections.sort(meds);
		for (Medi m : meds) {
			System.out.println(m);
		}
	}

}

Pöbeln kann ich auch. :/
 
B

BestGoalkeeper

Gast
Mit Blochchain ginge das auch, wenn man die Integrität der Datensätze sicherstellen möchte. Hab ich aber jetzt nicht umgesetzt.

Dann das json direkt in der JOptionPane editieren?
Ja, so ist das gedacht, je nach dem, wie viele Felder man haben möchte, trägt man die Werte dann in dem vorformatierten Textfeld ein.

Man kann natürlich noch einen Status hinzufügen, vielleicht einen für "schon nachbestellt" == 2 oder so ähnlich. Danach könnten nur noch "bald zu bestellende Medikamente" angezeigt werden bzw. könnte vorher entsprechend sortiert werden. Aber das geht schon ins Detail.
 

niceWork

Mitglied
Schönen Abend!

Erstmal DANKE an alle für eure Inputs! Auch wenn ich hier noch nicht allzu viel mitreden kann, verfolge ich das mit großem Interesse.
Blockchain halte ich als Java Anfänger momentan für (noch) zu kompliziert, ich möchte es gerade jetzt eher einfach halten, um Erfolgserlebnisse zu haben und dann auch dran zu bleiben :) Dennoch danke - immerhin weiß ich jetzt was das ist und wie es prinzipiell funktioniert! Das ist auf jeden Fall auch etwas!

Von allen Vorschlägen, und das waren schon einige, wäre mir jetzt momentan auch die Variante mit CSV die sympathischste. Gerade der Fakt, dass man diese auch in Excel erstellen/bearbeiten kann, ist hier durchaus ein Vorteil.
Ich denke, ich werde das mal so umsetzen versuchen. Später, um mit der Technologie vertraut zu werden, werde ich das ganze auch einmal in Form einer einfachen Datenbank - wie vorgeschlagen - aufbauen. Und mich so kontinuierlich steigern.

Super, dass hier so rege diskutiert wird. Hier kann man wirklich was lernen als Beginner :)

Danke nochmal an alle!!!!
 

niceWork

Mitglied
Super danke!
Hab mich mal etwas eingelesen. So wie ich das verstehe braucht für JSON externe Libraries oder? XML würde lt. API-Doc mittels XMLDecoder bzw. XMLEncoder funktionieren. Stimmt das so in etwa?
 

httpdigest

Top Contributor
Was sind denn ganz konkret überhaupt deine Anforderungen zwecks Datenformat? Soll das Ergebnis menschenlesbar sein? Hast du konkrete Anforderungen bezüglich der Elemente/Attribute, die auftauchen sollen? Javas XMLEncoder ist ja nun schon sehr "generisch" und erzeugt auch sehr generisches und "Java-spezifisches" XML, was gedacht ist, um von dem XMLDecoder verstanden zu werden. Das produzierte XML ist z.B. nicht geeignet als Datenaustauschformat zwischen zwei unabhängigen Anwendungen, sondern als Austausch zwischen einem XMLEncoder und einem XMLDecoder, die über denselben Classpath verfügen, um die Klassen entsprechend zu deserialisieren, da in das XML ja auch direkt die Java-Klassennamen reingeneriert werden. Das möchte man eventuell nicht haben. Das Format ist unter Umständen dann auch nicht "stabil", da es sich ja (wie beim ObjectOutputStream) von Java-Version zu Java-Version ändern kann.
Im Allgemeinen versucht man Datenaustauschformate unabhängig von der verwendeten Programmiersprache bzw. -pattform zu definieren.
 

niceWork

Mitglied
Also bei mir ist es so:
Ich beginne im Herbst eine Berufsausbildung zum Softwareentwickler Java, die 10 Monate dauert (berufsbegleitend). Um die Lernkurve möglichst steil zu machen, absolviere ich gerade einen Onlinekurs für Java. Und da man Coden ja bekanntlich nur durchs Coden selbst lernt, hab ich mir mal überlegt was für einen Anfänger gut umzusetzen wäre -mit meinem kleinen Projekt mit den Medikamenten habe ich einen Praxisbezug.

Ich verstehe schon einiges von Java, nicht zuletzt da der Kurs sehr gut ist, dennoch stehe ich am Anfang. Das ist mir völlig klar.
Ich habe für mein Medikamentenprogramm jetzt eine kleine GUI mit Swing gebastelt. Wo ich mir nur schwer tue ist, die GUI mit der Logik zu verknüpfen - nach dem MVC Prinzip. Daran sitze ich momentan. Die Logik ist noch nicht fertig, aber genau das möchte ich ja jetzt umsetzen (lernen). Am schwierigsten finde ich die Überlegungen, was brauche ich z. B. an Klassen, Methoden usw. Das Coden selbst ist - mMn - eigentlich nicht der schwierigste Part.

Und hier stellt sich für mich eben die Frage: Wie speichere ich die Daten, so dass sie nach dem Beenden des Programms wo gesichert sind bzw. ich sie das nächste Mal wieder öffnen/bearbeiten/ ... kann. Und als für Anfänger vorerst am einfachsten machbar erschienen mir JSON oder XML. Lasse mich aber gerne eines Besseren belehren.
:) Danke!
 

White_Fox

Top Contributor
Auch nach Lesen deines Posts: Wähle CVS. Wenn du es gut machen willst, so daß es am Ende vielleicht tatsächlich sogar benutzt wird, ist das schon mehr Arbeit als man denkt.

Wenn du geschickt sein willst, dann realisiere es so daß du das Dateiformat möglichst einfach wechseln kannst. Dann hast du auch mehr gelernt als dich gleich sofort für das "richtige" Datenformat zu entscheiden - und wechseln kannst du später trotzdem noch, wenn du willst.
 

temi

Top Contributor
Wenn du geschickt sein willst, dann realisiere es so daß du das Dateiformat möglichst einfach wechseln kannst.
Da stimme ich voll zu. Beginne mit einem Interface z.B. DataWriter in dem du die notwendigen Methoden deklarierst. Mach mit einer Klasse CsvDataWriter weiter, die das Interface implementiert. Dann kannst du später immer noch einen XmlDataWriter, einen JsonDataWriter oder sonstwas dagegen austauschen.
 
B

BestGoalkeeper

Gast
Auch nach Lesen deines Posts: Wähle CVS.
CSV ist obsolet. Schon seit zig Jahrzehnten. Es braucht nur mal ein Semikolon codiert werden müssen (was ja durchaus bei Medikamentennamen vorkommen kann).
Man wählt eigentlich immer json, wenn man ein einfaches und von Menschen lesbares Format haben möchte, das auch nicht an unterschiedliche Java Versionen gekoppelt ist (reines XML ist das auch nicht, aber bei der Verwendung der Bordmittel schon).
Eigentlich kannst du die Logik fürs Laden und Speichern und der Differenzenrechnung direkt meinem posting entnehmen. Aber Eigenlob soll ja bekanntlich stinken, also mach was du für richtig hältst. :D
 

temi

Top Contributor
Das ist weiterhin ein beliebtes Format, um Daten aus einem Programm zu exportieren und in ein anderes zu importieren.

Außerdem solltest du berücksichtigen, dass es darum geht etwas zu Lernen, da kann man gerne einfach anfangen und sich steigern. Lernen heißt ja auch verschiedene Dinge auszuprobieren. Am Ende kann er sich ja dann an den BlockChainDataWriter setzen ;)
 

mrBrown

Super-Moderator
Mitarbeiter
Es braucht nur mal ein Semikolon codiert werden müssen (was ja durchaus bei Medikamentennamen vorkommen kann).
Ist doch absolut kein Problem mit CSV.

Man wählt eigentlich immer json, wenn man ein einfaches und von Menschen lesbares Format haben möchte, das auch nicht an unterschiedliche Java Versionen gekoppelt ist (reines XML ist das auch nicht, aber bei der Verwendung der Bordmittel schon).
Schwurbel schwurbel...
 
K

kneitzel

Gast
Ist schon hart: bezüglich csv muss ich Tobias etwas Recht geben. CSV ist in meinen Augen auch keine tauglich Lösung und Gründe wurden etwas genannt. CSV habe ich schon öfters nutzen müssen und es hat sich zu oft als Krücke herausgestellt.

Dann lieber ein eigenes Textformat entwerfen so man keine externe Library verwenden möchte. (Da kann man sich was taugliches Überlegen, das keine Probleme macht.)

Ansonsten mit Library wäre XML oder Json gut. Man kann aber auch Excel nehmen so man die Daten auch mit Excel verarbeiten können möchte...

Optionen sehe ich viele und die wurden gut ausgeführt. CSV geht natürlich auch, so man sich bewusst ist wo die Grenzen sind. Aber daran würde ich nicht herum basteln sondern es hinnehmen. (Also festes Trennzeichen unabhängig von der Regionalisierung, Limitierung der Zeichen, die verwendet werden dürfen und was sonst noch so auftauchen könnte ....)

Aber egal wie Du Dich entscheidesr: leg einfach los. Du wirst auf jeden Fall dazu lernen und das ist der Hauptzweck.
Daher wäre meine Empfehlung, dass du einfach mehrere Optionen implementierst.... als Übung also auch sehr tauglich :)
 

White_Fox

Top Contributor
Man wählt eigentlich immer json, wenn
Ja, ist das denn dann noch eine Wahl? Hm...

Ich schreib es im Mikrocontrollerforum oft genug:: Für gute Entwickler/Ingenieure gibt es keine Regeln oder Immer-wenn-Lösungen. Für gute Entwickler/Ingenieure gibt es Anforderungen und Umstände, die den Anforderungen entgegenstehen oder günstig sind. Und daraus wird ein Kompromiss herausgearbeitet, der der Ideallösung im besten Fall möglichst nahekommt.
 
K

kneitzel

Gast
Und jetzt stell dir mal vor, in irgendeinem String steht ein " und das soll als JSON gespeichert werden :oops:
Ja, ich mag XML zusammen mit XSD ... und dann auch die Verarbeitung per XSLT ...

Wobei das einfach daran liegt, dass ich da mehr Erfahrungen mit sammeln durfte. Gerade mit Namespaces und Co kann es ohne Erfahrung sehr herausfordernd werden...
 
K

kneitzel

Gast
Und jetzt stell dir mal vor, in irgendeinem String steht ein " und das soll als JSON gespeichert werden :oops:
Was ich vergessen hatte:
Org.json oder Jackson oder eigentlich jede JSON Library dürfte sich da problemlos drum kümmern, dass Quotes ein Escape Zeichen bekommen und so.

Das sind dann auch Dinge, wo man vorhandene Libraries nutzen wird. Sonst wäre die Erwartungshaltung bezüglich Datenbank recht hoch :)
 
K

kneitzel

Gast
Das gleiche macht allerdings auch jede Lib für CSV
Du hast massive Probleme mit der Regionalisierung bei CSV. Das hast du bei JSON und XML eben nicht. Der Deutsche Client spricht den Webservice in den USA problemlos an.

Die Rumhampelei mit CSV Dateien ist extrem und alles andere als schön. Und ich kenne keine Library, die das wirklich anfängt. Wir haben da damals teilweise selbst was geschrieben, aber das sind Krückenlösungen. Ähnlich wie die Erkennung des Zeichensatzes bei einer Datei....sa ist ein Eintrag im Kopf der Datei recht gut ... und wo ich da schon etwas vom Thema weg bin: ist im JDK schon etwas enthalten, das mit UTF BOM umgehen kann? Oder ist das immer noch dem Entwickler selbst überlassen sowas zu erkennen und heraus zu filtern?
 
K

kneitzel

Gast
Ich sehe es nicht als streiten, nur kommen da halt Erinnerungen hoch... das ist wie bei der Makler Werbung mit dem Griff in den Kaktus :)

Generell kann man einiges bauen:
Erkennung der Trennzeichen: in den ersten zwei Zeilen die , und ; zählen. Das, was konstant ist / das was größer ist dürfte das Trennzeichen sein.
Strings sind immer in Quotes (wenn man das erzwingen kann, dann ist es gut). Dann sucht man bei einem " an Anfang des Wertes nach " + Trennzeichen und damit sind ein einzelnes Quote oder , bzw; kein Problem mehr. Aber klar: ", bzw "; sind dann immer noch problematisch.

Man kriegt gute Annäherungen hin und ich meine das MS Excel damit auch klar gekommen ist.

Wenn es nur um das Speichern/Laden geht, dann kann man überlegen, bestimmte Zeichen mit Escape Zeichen zu versehen .... Das ist aber etwas, das ich so noch nicht implementiert habe (das davor durfte ich schon mit c# schreiben
 

fhoffmann

Top Contributor
Ich sehe es nicht als streiten, nur kommen da halt Erinnerungen hoch...
Aber für einen Anfäger ist es doch viel spannender, erst einmal ein Interface zu schreiben und dies zu implementieren, wie temi vorgeschlagen hat:
Beginne mit einem Interface z.B. DataWriter in dem du die notwendigen Methoden deklarierst. Mach mit einer Klasse CsvDataWriter weiter, die das Interface implementiert. Dann kannst du später immer noch einen XmlDataWriter, einen JsonDataWriter oder sonstwas dagegen austauschen.
 

temi

Top Contributor
Hm, hab ich was verpasst?

Wir reden hier von einer kleinen lokalen Anwendung, die in erster Linie zu Übungszwecken erstellt wird.
Lokalisierung ist hier völlig egal, ein Semikolon ist nach dem bisher gehörten nicht zu erwarten und wenn dann nimmt man halt was anderes als Trennzeichen her. Damit reicht dann String.split() und gut ist.
Wenn das Programm dann läuft, kann er weitere Speicherformate ergänzen und sich mit allen möglichen Libraries auseinander setzen.
 
K

kneitzel

Gast
Welche Probleme siehst du da? Nach RFC 4180 richten, dann ist das meiste klar, genauso wie bei JSON.
Jetzt fühle ich mich etwas verarscht...

Also das diese RFC nicht die übliche Realität abbildet, ist klar? Und ehe Du meckerst a.la. "Was konfiguriert Microsoft bei Regionalen Settings auch ein Listentrennzeichen und nutzt dieses - können die sich nicht an Standards halten?" dann muss ich schon sagen: Ja, ganz böses Microsoft: Haben die sich einfach nicht an den Standard von 2005 gehalten.... Hätten die doch bei Ihrer Implementation berücksichtigen können ....

Sorry, aber es ist nett, dass da jemand irgendwas geschrieben hat. Das mag auch ganz toll sein. Aber da es die Wirklichkeit, die es schon Jahrzehnte gab, nicht abdeckt, ist das eine RFC die ich ablehne, da es etwas Neues definiert in einem Bereich, in dem schon lange etwas existiert. Aber wenn man sich die Welt nicht anschaut und dann meint, man könne sie beschreiben (Naja, etwas angeschaut haben sie es wohl: "however some programs, such as Microsoft Excel, do not use double quotes at all") ...

Also ja: Tolle RFC. Kann man umsetzen. Dann hast Du ein Format, in dem Deine Applikation lesen und schreiben kann. Aber die Nutzung in anderen Programmen ist problematisch, es sei denn, da wurden auch bestehende Nutzungswege schlicht ignoriert und diese RFC heran gezogen ...
 

temi

Top Contributor
Wird hier gerade der Untergang der Welt, aufgrund von CSV-Dateien herauf beschworen? ;)

Es sollen doch nur Medikamente gespeichert werden:
Cetirizin,1,PK,50,ST,2020-08-01,2021-06-15
 
K

kneitzel

Gast
Toller Vorteil wäre folgender: Excel kann CSV sowohl lesen, als auch schreiben. Du kannst also die Daten relativ leicht aus der vorhandenen Datenbasis importieren (oder auch umgekehrt).
Wird hier gerade der Untergang der Welt, aufgrund von CSV-Dateien herauf beschworen? ;)

Es sollen doch nur Medikamente gespeichert werden:
Cetirizin,1,PK,50,ST,2020-08-01,2021-06-15

Auf einem Windows mit Deutscher Regionalisierung wäre Dein
Cetirizin,1,PK,50,ST,2020-08-01,2021-06-15
ein Dokument mit einem Feld, in dem genau dieser Text steht.

Cetirizin;1;PK;50;ST;2020-08-01;2021-06-15
Und schon klappt es auch mit Excel - aber halt nur, so lange man das Dokument nicht einem Kollegen gibt, der Englische oder US Settings hat. Dann hätte er wieder diese Problematik ...

Und das zeigt hoffentlich, worum es mir hier nur geht: Die einfache Weitergabe von (sehr leidvollen) Erfahrungen. Und die klare Konsequenz daraus: CSV ist ein Datenformat, das für den Datenaustausch nicht geeignet ist. Und Probleme bei import/export (Das sind ja Datenaustauch-Prozesse) können auftreten.

Er kann selbstverständlich ein csv Fileformat nach RFC 4180 nutzen. Nur eben sollte er beim Datenaustausch mit Problemen rechnen.
Das ist einfach alles. Und unter dem Strich ist es wohl auch das, was Tobias meinte, als er es als "obsolet" bezeichnete.

Ja, tolle Übung für den TE. Aber taugliches Dateiformat in der Praxis ist definitiv etwas anderes. Und wenn es um Datenaustausch geht: Dann bitte taugliche Formate nehmen... Das wäre einfach nur mein Tipp. Den könnt ihr ignorieren oder für schlecht halten, aber spielt etwas damit rum und dann merkt ihr diese Problematik ebenso.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
O Zwei Fragen zu Methoden Aufrufen Java Basics - Anfänger-Themen 5
B fragen zur for-schleife und arrays Java Basics - Anfänger-Themen 8
J 2 Fragen zu Befehlen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben