Was ist die beste Methode zum Speichern von Daten?
- Allgemein
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.
-
-
Also auf jeden Fall kommt es auf den Typ an. Bei Textdateien und Daten reichen auch Textdateien.
Passwörter immer verschlüsseln!
Auf jeden Fall immer mit System.IO speichern.
[VB.NET] System.IO Namespace richtig nutzen
Ich habe immer ini - Dateien benutzt, aber da ist kein großer Unterschied. -
@programmer71
Passwörter verschlüsselt in eine Textdatei schreiben macht sehr wenig Sinn. youtube.com/watch?v=In76HrcTHQI (Weiter hinten im Video)
Bei simplen Daten mit System.IO, ok. Aber sobald es mehr als ein Name und eine Adresse sind unbedingt eine Datenbank, oder ähnliche Datenverwaltung.
Siehe dazu ErfinderDesRades' Tutorials hier im Forum. -
@LaMiy
Gut in Ordnung bei Datenbanken.
Wenn du ein Passwort mit einem MD5 Hash verschlüsselst, wo willst du es abspeichern?
In den Settings vom My-Namespace?!
Selbst wenn die Datei ausgelesen wird, dann kann das Passwort so ohne Weiteres nicht entschlüsselt werden.
Da gibt es ja nicht so viele Möglichkeiten das irgendwo hinzuspeichern.
In eine Datenbank vielleicht noch. -
-
-
System.Xml.Serialization.XmlSerializer
System.Runtime.Serialization.Json.DataContractJsonSerializer
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Such dir eins aus. Jeder hat seine Vor- und Nachteile.
Was du auch machen kannst: Datenbanken via SqlCe oder DataSets. -
@nafets3646: Nicht unbedingt. Wenn das Programm immer eine Art Salt vor das Passwort setzt, was gespeichert werden soll, kann die Passwort-Datei nicht mehr ganz so leicht ersetzt werden, außer der "Angreifer" generiert sich eine neue, eigene, valide Passwort-Datei.
Aber wir sollten jetzt erstmal die Antwort des TE abwarten, was er überhaupt abspeichern will, bevor wir hier noch länger rum spekulieren
Was allgemein Daten angeht würde ich meistens den einfach XmlSerializer empfehlen, da dort auch Daten leichter per Hand bearbeitet werden können, und der interne Aufwand dafür recht gering ist. -
-
-
versuch es hiermit:
youtube.com/watch?v=8m8pf8L1wbI
bei meinem aktuellem (etwas größerem) Projekt arbeite ich selbst auch damit, keine Probleme, alles Funktioniert wunderbar.
Zu den Datenbanken kann ich dir keine Auskunft geben, da ich mich noch nicht damit beschäftigt hab.
Grüße Ravler -
@Ravler: Ini-Dateien sind der letzte Müll. Sowas sollte aus Protest schon nicht genutzt werden.
Entweder wie @programmer71: schon sagte mit einer Datenbank oder einer Json-Datei.
Der Vorteil bei Json ist, das man wie Xml recht einfach editieren kann und einige Funktionen, die Xml nicht bietet, nutzen kann.
Wenn du nun einen solchen Aufbau hast:
Kann das einfach in Json serialisiert werden. Beispiel:
Das wird dann via
serialisiert.
Entsprechend kann das natürlich auch deserialisiert werden.
Der Vorteil hierbei ist, dass weniger Overhead erzeugt wird.
Eine Beispielsausgabe (aus meinem aktuellen Spiel) sieht dann in etwa so aus:
Lang {"Entries":[{"Key":"Title","Value":"UmFuZG9tIEFkdmVudHVyZQ=="},{"Key":"Author.JM","Value":""},{"Key":"Author.FB","Value":""},{"Key":"Game.Play","Value":"UGxheQ=="},{"Key":"Game.Settings","Value":"U2V0dGluZ3M="},{"Key":"Game.Exit","Value":"RXhpdA=="},{"Key":"Yes","Value":"WWVz"},{"Key":"No","Value":"Tm8="},{"Key":"Fullscreen","Value":"RnVsbHNjcmVlbg=="},{"Key":"Game.Credits","Value":"Q3JlZGl0cw=="},{"Key":"Credits.Title","Value":"XlRpdGxlJCB8IENyZWRpdHM="},{"Key":"Credits.SubTitle","Value":"Q29weXJpZ2h0IDIwMTMgYnkgRmlicmUgTmV0d29yaw=="},{"Key":"Credits.Introduction","Value":"VGhpcyBzb2Z0d2FyZSBoYXMgYmVlbiBtYWRlIHdpdGggWE5BIDQuMC4gSW50ZW50aW9uIHRvIGNyZWF0ZSB0aGlzIHNvZnR3YXJlIGlzIHRvIGdhaW4gbW9uZXkgZm9yIHN0dWR5aW5nIGFzIHdlbGwgYXMgZGV2ZWxvcG1lbnQgdG9vbHMgYW5kIGxlYXJuaW5nIGZvciBnYW1lIGRldmVsb3BtZW50Lg0KWW91IG1heSBub3RpY2UgdGhhdCB0aGluZ3MgYXJlIG5vdCBmaW5pc2hlZCBvciBtaXNzaW5nLiBUZWxsIHVzIG9uIERlc3VyYSB3aGF0IHlvdSB3YW50IHRvIGhhdmUgaW4gdGhpcyBnYW1lLiBPdGhlcndpc2UgdGhpcyB3b24ndCBiZSB3aGF0IHlvdSB3YW50IGl0IHRvIGJlLg0KV2UgaG9wZSB5b3UgZW5qb3kgdGhlIGdhbWUgYXMgbXVjaCBhcyB3ZSBoYXZlIHdyaXRpbmcgaXQu"},{"Key":"Credits.Team","Value":"SWRlYSwgU3RvcnksIExldmVsZGVzaWduOiBeQXV0aG9yLkpNJCwgXkF1dGhvci5GQiQNClByb2dyYW1taW5nOiBeQXV0aG9yLkpNJA0KVGV4dHVyZXM6IF5BdXRob3IuRkIk"},{"Key":"Credits.Music","Value":"TXVzaWM6DQpLZXZpbiBNYWNMZW9kIC0gVGhpbmdzPw=="}],"Locale":"en-US","Name":"Main"}
Die Werte sind hier in Base64 kodiert, damit keine Probleme bei der Dateitransaktion entstehen.
Die Datei ist etwa 1.37 KiB groß, eine entsprechende Datenbank (SqlCe) min. 128 KiB. Xml entsprechend etwa 8 KiB. Binärserialisiert wäre noch eine andere Sache, die du in Betracht ziehen kannst, allerdings kann die dann niemand lesen. Ist aber auch nicht kleiner als die Json Datei. -
@programmer71
Du verstehst es nicht. Bitte keine 'schlechten' YouTube Videos. YouTube Tutorials an sich sind nur Videos, auch jemand der Ahnung von dem hat was er tut kann ein Video erstellen, das ein Vorgang beschreibt.
Richtet euch nicht immer an die anderen, bildet euch mal selber eine Meinung und plappert nicht jeden foo nach. -
-
-
Das einzige was du hier tust ist die Meinung verschiedener User hier im Board zu vertreten. Du selbst hast wahrscheinlich selbst nicht viel Ahnung, was auch nicht schlimm ist und sich am Anfang nach denen zu richten ist eventuell sogar gut, jedoch sowas wie aber nur die Videos von 'SpaceyX' der außerhalb dieses Forums ein unbeschriebenes Blatt ist, zeigt halt das du mein Text nicht interpretieren kannst und nein das soll nicht beleidigend gegenüber dem User 'SpaceyX' sein.
Zum Topic:
Ich hab mir vor kurzem für Json eine Klasse geschrieben, die mir erlaubt die Klasse generisch lokal abzuspeichern und sie zuverwenden.
Spoiler anzeigen Quellcode
- public class ConfigHandler
- {
- public static string ConfigPath
- {
- get { return Path.Combine(Environment.CurrentDirectory, "Config.json"); }
- }
- public static void SaveConfig<T>(object input)
- {
- var jsonSerializer = new DataContractJsonSerializer(typeof (T));
- using (var ms = new MemoryStream())
- {
- jsonSerializer.WriteObject(ms, input);
- ms.Position = 0;
- using (var reader = new StreamReader(ms))
- {
- using (var writer = new StreamWriter(ConfigPath))
- {
- writer.Write(reader.ReadToEnd());
- }
- }
- }
- }
- public static T LoadConfig<T>()
- {
- if (!File.Exists(ConfigPath))
- {
- return default(T);
- }
- var jsonSerializer = new DataContractJsonSerializer(typeof (T));
- using (var reader = new StreamReader(ConfigPath))
- {
- using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(reader.ReadToEnd())))
- {
- return (T) jsonSerializer.ReadObject(ms);
- }
- }
- }
- }
vielleicht kannst du damit was anfangen, ist leider in C# aber es gibt ja genügen online converter. sinnvoll wäre es natürlich noch wenn du den configpath per konstruktor setzt. (ich brauchte es jedoch nicht) -
@AliveDevil:
Hallo,
ich glaube JSON ist genau die Sache, die ich brauche.
Ich brauche ja auch eine List(Of Aufgabe) und die kann
man ja genau so einfach deserialisieren.
Ich werde das dann mit JSON versuchen und
wenns funktioniert, markiere ich es als Erledigt,
ansonsten poste ich mein Problem.
Danke.
MFG
Alex-Digital -
Nein, ist es nicht.
Json kann keine relationalen Zusammenhänge persistieren, wie sie bei einem Aufgabenplaner mit höchster Wahrscheinlichkeit iwo auftreten.
Aber deine Eingangs-Frage käst mich an:was ist die beste Methode, Daten zu speichern?
Bei sonem Abstrakt-Gebläse braucht man erstmal zig Posts, um rauszukriegen, worums wirklich geht - warum kann man das nicht gleich sagen?
zurück @Topic: in diesem Falle ist eindeutig DB-Programmierung ohne Datenbank die günstigste Vorgehensweise: Das kann relationale Zusammenhänge modellieren, und erspart einem trotzdem das Theater mit richtigen Datenbanken.
-
Benutzer online 1
1 Besucher
-
Ähnliche Themen
-
Dauerthaftes speichern von kleinen Informationen
backtothetoast - - Sonstige Problemstellungen -
BlackHoleW13 - - Sonstige Problemstellungen
-
6 Benutzer haben hier geschrieben
- Gast (11)
- Alexander M. (3)
- nafets (1)
- LaMiy (1)
- FlashTek (1)
- ErfinderDesRades (1)