Offline - Datenbank

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Offline - Datenbank

    Hallo liebe community,ich habe circa 600 Karten aus einem Spiel welche ich nun offline abspeichern möchte. Das heißt für jede Karte ein paar Werte. Danach möchte ich diese Werte wieder abrufen können indem ich nur den Namen der Karte angebe. Welche Datenbank ist mir da zu empfehlen?
    Liebe grüße
    Wo viel kopiert wird, wird wenig kapiert.
    Andreas Tenzer
    (Dt. Philosoph, * 1954)
    Also ich nehme immer eine Datenbank im Hintergrund für solche Dinge. Macht es einfach wenn auch solch ein kleines Projekt mal wächst.

    Die einfachste Möglichkeit die ich nutze ist eine Access-MDB. OpenOffice ginge sicherlich auch. Habe ich aber noch nicht getestet.

    Vorteil an diesen Datenbanken ist, das man sie auch schnell auf einen anderen Rechner umziehen kann. Daher nutze ich kein SQL-Express oder solche Dinge für solche kleineren Projekte.
    @Maggo13: guck dir das verlinkte Tut mal an. Von wegen Umziehen: Die dort enthaltenen Samples enthalten auch die Xml-Daten-Dateien, also das downloadeste und ist umgezogen.
    Guck auch die Samples aussem vorletzten Post, die sind tw. schon recht advanced.

    Überleg mal, was das jeweils für ein Aufriss wäre, wollte man das über eine DB abwickeln.
    Ich bin mittlerweile Fan von JSON (erst recht mit JSON.NET, geht aber natürlich auch ohne). Json lässt sich auf jeder Plattform ohne weiteres verwenden, natürlich auch Sprachenübergreifend. Viele Frameworks wie das .NET Framework können Json von Haus aus, aber natürlich gibt es für eigentlich jede Programmiersprache auch Libraries. Außerdem produziert es extrem kleine Dateien - nur selbst implementierte Serialisierungsmethoden können das noch schlagen. Kleines Beispiel, wie man das aufbauen könnte:

    VB.NET-Quellcode

    1. Public Class Card
    2. Public Property Name As String
    3. Public Property Value As Integer
    4. '...
    5. End Class

    Serialisieren ließe sich das dann als Beispiel mit JSON.NET folgendermaßen:

    VB.NET-Quellcode

    1. Dim Cards As List(Of Card) = JsonConvert.DeserializeObject(Of List(Of Card))("Deine Datei")
    2. Dim Json As String = JsonConvert.SerializeObject(Cards)

    Eine Datei könnte dann so aussehen:

    JSON-Quellcode

    1. [
    2. {
    3. "Name": "Karte 1",
    4. "Value": 99
    5. },
    6. {
    7. "Name": "Eine zweite Karte",
    8. "Value": 2
    9. }
    10. ]

    Schön, übersichtlich und sehr kompakt.
    @ErfinderDesRades
    Wenn ich das richtig verstehe, sind relationale Datenmodelle ja sowas?
    Nutzer-IDVornameNachname
    1HansVielschreiber
    2JensMittelleser
    3ErichWenigleser
    =>
    Nutzer-IDBuch-ID
    11
    32
    13
    <=
    Buch-IDBuchtitel
    1Bessere Bücher schreiben
    2Lesetechniken
    3Veröffentlichung eines Buches

    Das sollte doch kein Problem zum Umsetzen sein? Zur Not baue ich mir das Modell nach:
    User: Name (String) + Books (List<Book>, erstellt aus einer Auflistung von Ids für die Bücher, z.B. Integer. Ansonsten auch direkt Integer möglich)
    Book: Name (String) + Id (z.B. Integer)

    Umwandeln ließe sich dieses Modell mit nur ein paar Zeilen extra-Code (sehr einfach, würde ich nicht als Umweg bezeichnen). Und jetzt mal abgesehen von dem Laden & Speichern: Eine anständige Klassenstruktur finde ich viel schöner als ein (typisiertes) DataSet.
    Jepp - das ist ein relationales Datenmodell, was eine m:n - Relation modelliert. Strukturell dasselbe wie im Datenmodell von vier Views-Videos

    Nur eine "anständige Klassenstruktur" kann niemals eine relationales Datenmodell abbilden.
    Also versuchmal mit selbstgebastelten Datenklassen den m:n-View des 4View-Tuts nachzubauen.
    Beachte dabei das vollständige Crud, also dass jeder Datensatz zugefügt, gelöscht und editiert werden kann.