neuer Datensatz WPF- MySql (RowUpdate)

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von beatles.

    neuer Datensatz WPF- MySql (RowUpdate)

    Hallo Zusammen

    Seit längerer Zeit arbeite ich an einem Beispiel, um das DataSet näher kennen zu lernen.
    Ich arbeite mit Visual Studio 2010 Express und programmiere mit VB aber WPF Applikationen...

    Ich bringe es fertig, mich zur MySql-DB zu verbinden, Daten zu laden
    und bestehende Datensätze zu ändern und in die DB zu speichern.

    Was mir nicht gelingt ist, ein neuer Datensatz direkt im Datagrid oder via Textbox hinzuzufügen.
    Also ich erstelle das DataSet, definiere den DataAdapter, DataTable und fülle das Schema.

    Dann habe ich folgendes vermerkt, dass es mit den ID's im DataSet und in der MySQL-DB kein Durcheinander gibt:

    VB.NET-Quellcode

    1. Dt.Columns("TestID").ReadOnly = False
    2. Dt.Columns("TestID").AutoIncrementSeed = -1
    3. Dt.Columns("TestID").AutoIncrementStep = -1
    4. Cb = New MySqlCommandBuilder(Da)
    5. AddHandler Da.RowUpdated, AddressOf Test_RowUpdated


    VB.NET-Quellcode

    1. Private Sub Test_RowUpdated(ByVal sender As Object, _
    2. ByVal e As MySqlRowUpdatedEventArgs)
    3. If e.Status = UpdateStatus.Continue AndAlso _
    4. e.StatementType = StatementType.Insert Then
    5. e.Row!TestID = getIdentity.ExecuteScalar()
    6. e.Row.AcceptChanges()
    7. End If
    8. End Sub


    VB.NET-Quellcode

    1. 'Änderungen in der DataTable speichern -> Update
    2. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
    3. System.Windows.RoutedEventArgs) Handles Button2.Click
    4. Dim vorname As String = Trim(vornameTextBox.Text)
    5. Dim results As DataRow()
    6. Dim newvorname As DataRow
    7. newvorname = Dt.NewRow
    8. newvorname!vorname = vorname
    9. 'Update DataTable
    10. Da.Update(Dt)
    11. 'Neuer Datensatz in DataGrid1 einfügen, TextBox leeren
    12. UpdateDataGrid1(newvorname!KundenID)
    13. vornameTextBox.Clear()
    14. vornameTextBox.Focus()


    Genau hier am Schluss weiss ich nicht weiter, dass ist sicherlich nicht korrekt definiert so. Ich trage etwas in die vornameTextBox1 ein und das soll der neue Datensatz sein. Die ID muss ich nicht angeben, da diese autom. generiert wird (negativ Zahl -> AutoIncrementSeed/Step -1).
    Die TextBox sollte wissen, dass der Eintrag dann für das Feld vorname aus der DB respektive in der DataTable ist durch

    VB.NET-Quellcode

    1. Dim vorname As String = Trim(vornameTextBox.Text)
    Was noch als Fehler angezeigt wird, ist "UpdateDataGrid1" ? Warum auch immer?
    Aber wenn ich das weglasse, dass der DataGrid1 upgedated wird, wird die Datenbank trotzdem nicht mit einem neuen Datensatz aktualisiert..?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „beatles“ ()

    Also du meinst einfach etwas fix im Code zu hinterlegen zum Einfügen? Das ist nicht das Ziel.


    Ziel ist es, etwas in der TextBox1 einzutragen und das wird dann in die DataTable geschrieben und später via Adapter in die DB transferiert. Zudem soll natürlich der DataGrid1 aktualisiert werden. Wobei eben so wie es jetzt steht und ich das mit dem DataGrid weglasse, wird auch nichts in die DB geschrieben. Es ist also grundsätzlich etwas falsch mit dem Update...
    nein, ich meine, das prog zu starten, da zeigt das Datagrid doch unten eine leere Zeile an.
    Da kannste einfach reinschreiben und zugefügt ist.

    Insgesamt ist dein Ansatz Crap, denn mit Ado.Net lädt und speichert man nicht einzelne Datensätze, sondern immer gleich eine oder mehrere Tabellen. Insbesondere Speichern tut man immer einfach alle Änderungen, die sich im gesamten Dataset seit dem letzten Laden oder Speichern ereignet haben.
    Bei diesen Änderungen ists unerheblich, obs INSERTs, UPDATEs oder DELETEs sind, und welcher Datensatz in welcher Tabelle betroffen ist.

    Eine Methode macht das, und gut ist.

    Guck dirmal "Datenbank in 10 Minuten" auf Movie-Tuts.
    Das ist zwar WinForms, aber funktional besteht ühaupt kein Unterschied zu Wpf.
    aha, ja das war ursprünglich meine Idee, direkt etwas im DataGrid einzugeben aber alle Tutorials die ich gefunden habe waren eben der Umweg über eine TextBox...

    Ich habe bewusst ADO.Net gewählt, was ist wenn die Tabellen verknüpft sind? Kann ja sein dass z.b. Namen und Adressen in unterschiedlichen Tabellen sind?
    Das Beispiel, das ich nachprogrammiere (versuche) ist aus einem Buch...

    Aber danke für den Tipp ich seh mir mal das Movie-Tuts an...