Allgemeine Frage zum Umgang mit fremden MS-SQL Datenbanken und eigenen Klassen

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Allgemeine Frage zum Umgang mit fremden MS-SQL Datenbanken und eigenen Klassen

    Hi,

    ich muß zugeben, ich komme ursprünglich aus der VB Classic Welt, hab lange Pause gemacht und frickle jetzt mit vb net / Winforms rum. Mit Datenbanken bin ich nie so richtig warm geworden aber Klappt irgendwie.

    Ich muß recht oft Daten aus einer externen bestehenden Datenbank holen und verarbeiten. Dazu baue ich mir dann eine Klasse z.B.

    VB.NET-Quellcode

    1. Public Class clsPerson
    2. Public Property ID As Integer
    3. Public Property Vorname As String
    4. Public Property Nachname As String
    5. Public Property Geburtsdatum As Date
    6. Public Property IstWeiblich As Boolean
    7. End Class


    In einer Funktion hole ich mir die Personen aus der DB, wobei die Tabelle noch mehr Spalten hat, die mich aber nicht interessieren

    VB.NET-Quellcode

    1. Public Function HolePersonen() as ListOf (clsPerson)
    2. Dim LstPersonen as New ListOf (clsPerson)
    3. (...)
    4. SELECT ID, VName, Nname, GebDatum, Geschlecht FROM tMitglieder
    5. (...)
    6. dt = sqldb.FillDataset(sSql, CommandType.Text).Tables(0)
    7. dv = dt.DefaultView
    8. For Each drow As DataRowView In dv
    9. Dim Person As New clsPerson
    10. Person.ID = drow("ID")
    11. Person.Vorname= drow("VName").ToString
    12. If drow("Geschlecht").ToString = "w" Then
    13. Person.IstWeiblich = True
    14. End If
    15. LstPersonen.Add(Person)
    16. Next
    17. Return Personen


    In meinem weiternen Code kann ich dann mit den Objekten Arbeiten.

    Und nun die Frage: Macht das so Sinn? Igendwie ist das doch holzig oder nicht? Wie geht das besser? Insb. wenn in der Datenbank Felder krude benutzt werden, wie hier zum Beispiel ein Textfeld in dem ein w/m für das Geschlecht steht oder auch mal ein Y/N um einen Boolean abzubilden.

    Viele Grüße

    John
    Du kannst der Klasse (hier Person) im Konstruktor das du row Objekt übergeben und dann „innerhalb“ der Klasse das ganze den Propertys/Feldern zuweisen. Dann ist das ganze zumindest mal aufgeräumt.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    John422 schrieb:

    Macht das so Sinn? Igendwie ist das doch holzig oder nicht? Wie geht das besser?
    Ich rate von selbstgebastelten Daten-Klassen ab.
    Man kann sich Datenklassen generieren lassen. Ich bevorzuge da das typisierte Dataset, aber wer mag kann sich auch in EF einarbeiten.
    Dieses Methoden-Theater mit "HolePerson", "SpeicherePerson", "FügePersonHinzu", "LöschePerson" (für jede Tabelle), und die ganze Logik, um zu bestimmen, ob man Speichern, Zufügen oder Löschen ansprechen muss - das wird einem generiert, und funzt dann richtig.
    Und Databinding-Unterstützung wird auch generiert - das ist das A&O der Anwendungs-Entwicklung.

    Guck ma im Datenbank-Tutorial-Bereich.
    "VierViews" zeigt, wie man datengebunden entwickelt, und "Dataset -> DB" zeigt, wie man das dataset mit der DB synchronissiert.
    paar andere Tuts dort dürften auch noch interessant sein.