DataGridView Update in Mysql

  • VB.NET

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

    DataGridView Update in Mysql

    Hallo VB Forum

    Ich möchte mal gern wissen wie ich es hin kriege das wenn ich in der DataGridView Daten stehen habe z.b

    UserName = Kevin
    UserPassword = 1234
    User Rank = 1

    Das wenn ich diese daten dann ändern und dann aus Speichern drücke das er es in der Mysql Updatet also

    Ich habe mal mit

    VB.NET-Quellcode

    1. DBComm.CommandText = "UPDATE * From User ='" & DataGridView1.DataSource & ""

    versucht dann kommt aber immer

    VB.NET-Quellcode

    1. Der Operator & ist für Zeichenfolge UPDATE * From User =' und Typ DataTable nicht definiert.



    MFG

    Kevin
    Der Fehler ist immer noch :D

    ________________________________________

    Also noch mal ich möchte die ganze Datagrid Updaten in die Mysql^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kevin“ ()

    Ich habe das so gelöst:

    VB.NET-Quellcode

    1. Public Class DGVEntry
    2. Public RowIndx As Integer
    3. Public ColumnIndx As Integer
    4. Public oldVal As String
    5. End Class
    6. Dim entr As New List(Of DGVEntry)
    7. Dim ent As New DGVEntry
    8. Private Sub DataGridView1_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.CellBeginEdit
    9. ent = New DGVEntry
    10. ent.oldVal = DataGridView1.Rows(DataGridView1.SelectedCells(0).RowIndex).Cells(0).Value.ToString
    11. ent.RowIndx = DataGridView1.SelectedCells(0).RowIndex
    12. ent.ColumnIndx = DataGridView1.SelectedCells(0).ColumnIndex
    13. entr.Add(ent)
    14. End Sub
    15. Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
    16. SaveButton.Enabled = True
    17. End Sub
    18. Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click
    19. Dim cmdTxT As String = Nothing
    20. For i = 0 To entr.Count - 1
    21. Dim tbl As String = SelectedTable
    22. Dim newVal As String = DataGridView1.Rows(entr(i).RowIndx).Cells(entr(i).ColumnIndx).Value
    23. If newVal = "True" Then newVal = 1
    24. If newVal = "False" Then newVal = 0
    25. Dim oldVal As String = entr(i).oldVal
    26. Dim ValClmn1 As String = DataGridView1.Columns(entr(i).ColumnIndx).HeaderText
    27. Dim ValClmn2 As String = DataGridView1.Columns(0).HeaderText
    28. cmdTxT &= "UPDATE " & tbl & " SET " & ValClmn1 & "='" & newVal & "' WHERE " & ValClmn2 & "='" & oldVal & "';" & vbNewLine
    29. Next
    30. Try
    31. Dim mycommand As New MySqlCommand(cmdTxT, Conn)
    32. mycommand.ExecuteNonQuery()
    33. entr.Clear()
    34. cmdTxT = Nothing
    35. SaveButton.Enabled = False
    36. Catch mysqlex As MySqlException
    37. MsgBox(mysqlex.Message.ToString, MsgBoxStyle.Critical)
    38. Catch ex As Exception
    39. MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
    40. End Try
    41. End Sub
    LG
    Merio
    Ich save immer mit TableAdapters.

    Da kannich im DGV löschen, zufügen, ändern, der TableAdapter erkennt automatisch neue, gelöschte oder geänderte DataRows, und wendet das passende SQL-Command an.

    Ich save also nicht jede DataRow einzeln, sondern wenn ich auf Save klicke werden sämtliche DataRows, bei denen sich was getan hat (und nur die), sogar des gesamten Datasets mit der DB synchronisiert.
    gugge "Datenbank in 10 Minuten" auf Movie-Tuts

    Auszug:

    VB.NET-Quellcode

    1. Private Sub Save()
    2. 'Evtl in Bearbeitung stehende Zellwerte als Eingabe übernehmen
    3. If Not Me.Validate() Then Return
    4. With Me.DBSampleDataSet.Category
    5. 'Dieser Block führt CategoryTableAdapter.Update() für gelöschte DataRows extra aus.
    6. '! Besonderheit: Die DataRelation wird kurzfristig "umkonfiguriert", sodaß
    7. '! DataRow.AcceptChanges auch für die ChildRows aufgerufen wird, damit sie vom
    8. '! ArticleTableAdapter.Update() ausgenommen werden.
    9. .ChildRelations(0).ChildKeyConstraint.AcceptRejectRule = AcceptRejectRule.Cascade
    10. Dim DeletedRows As DataRow() = .Select("", "", DataViewRowState.Deleted)
    11. Me.CategoryTableAdapter.Update(DeletedRows)
    12. .ChildRelations(0).ChildKeyConstraint.AcceptRejectRule = AcceptRejectRule.None
    13. End With
    14. Me.CategoryTableAdapter.Update(Me.DBSampleDataSet.Category)
    15. Me.ArticleTableAdapter.Update(Me.DBSampleDataSet.Article)
    16. End Sub


    Das Tutorial macht zwar in Access, aber inzwischen gibts für MySql eine gleichartige unterstützung (ganz sicher binnich da aber nicht).