Übergabe von WinForm an DB (via API)

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

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Übergabe von WinForm an DB (via API)

    Hallo Community,
    ​ich lese hier schon seit einigen Wochen fleißig mit und habe schon den ein oder anderen guten Tipp bekommen. Daher versuche ich hier auch mal mein Glück und hoffe, die Crowd hat vielleicht auch einen kleinen Tipp für mich.

    ​In einem Programm habe ich viele verschiedene Formulare. Diese habe ich via [BindingSource] an ein untypisiertes [DataSet] gebunden. Wenn das Formular fleißig ausgefüllt wurde, übergebe ich die Daten mit dem [BindingSource] an eine Sub weiter. Eines vorweg: es funktioniert alles, wie es soll.

    ​Meine Sub sieht dann so ähnlich aus:

    VB.NET-Quellcode

    1. Public Sub HelferAdd(ByRef Datensatz As DataRowView)
    2. Dim MySQL As String = "INSERT INTO data_helfer (dat_intnr, dat_name, dat_vorname, dat_gebdat, dat_geschlecht) VALUES ("
    3. MySQL = MySQL & "'" & Datensatz.Item("InterneNummer") & "',"
    4. MySQL = MySQL & "'" & Datensatz.Item("Name") & "',"
    5. MySQL = MySQL & "'" & Datensatz.Item("Vorname") & "',"
    6. MySQL = MySQL & "'" & Datensatz.Item("Geburtstag") & "',"
    7. MySQL = MySQL & "'" & Datensatz.Item("Geschlecht") & "'"
    8. MySQL = MySQL & ")"
    9. db.Query(MySQL)
    10. End Sub


    ​Hier in diesem Beispiel sind es nur ein paar Werte, die übergeben werden. Ich habe aber auch Formulare, da werden 50-60 Felder übergeben.

    Jetzt kommt meine Frage:
    ​Ist es bei so vielen Feldern sinnvoll, alles direkt in einem Rutsch zu übertragen, oder wäre es ratsamer, zunächst beispielsweise einen Datensatz mit einer eindeutigen Nummer zu generieren und dann massenweise Updates zu schicken? Ich hoffe, ich habe meine Frage verständlich ausgedrückt und jeder versteht, was ich meine.

    Zum Eintrag in die DB benutze ich nicht den MySQL-Connector, sondern übergebe den kompletten Query verschlüsselt an eine API, welche mit PHP7 betrieben wird.

    vor allem wichtig ist, dass du mit DbParametern arbeitest - (und mit DbDataAdaptern wärs sogar besonders effizient).
    Jdfs. dieses String-Gefrickel öffnet deine Anwendung für Sql-Injection-Angriffe - d.h. jeder User, der will, kann bei dir beliebige Sql-Statements zur Ausführung bringen - guck dir mal den Link an.

    (Weiters könntest du dir langfristig viel Mühe ersparen, wenn du dich in die typisierte Dataset-Technologie einarbeitetest. Aber ich vermute, dazu bist du noch nicht bereit)