daten mit UPDATE ändern

  • VB.NET
  • .NET 4.5

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

    daten mit UPDATE ändern

    hi, ich habe eine datenbank mit 3 kundendaten sätzen. und eine form mit der ich einen kundendatensatz bearbeiten kann.
    mein problem ist, wenn ich versuche dann den datensatz zu ändern kommt folgende fehlermeldung:

    Die SelectCommand-Eigenschaft wurde nicht initialisiert vor dem Aufruf von: 'Fill'.

    die änderung des datensatzes wird zwar geändert, aber leider werden die anderen datensätze ebenfalls geändert nun habe ich 3 mal den gleichen datensatz.

    hier der code:

    VB.NET-Quellcode

    1. Private Sub btn_aktualisieren_Click(sender As Object, e As EventArgs) Handles btn_aktualisieren.Click
    2. sqlCmd.Connection = c
    3. 'Datensatz mit UPDATE aktualisieren
    4. sqlcmd.CommandText = "UPDATE kundendaten_um SET Kundennr = '" & txtkundennr.Text _
    5. & "', vorname = '" & txtVorname.Text _
    6. & "', nachname = '" & txtNachname.Text _
    7. & "', geburtstag = '" & txtGeburtstag.Text _
    8. & "', email = '" & txtEmail.Text _
    9. & "', anschrift = '" & txtStrasse.Text _
    10. & "', plz = '" & txtPLZ.Text _
    11. & "', beschreibung = '" & rtb_notice_kd.Text _
    12. & "', ort = '" & txtOrt.Text & "'"
    13. Try
    14. sqlcmd.Connection.Open()
    15. sqlcmd.ExecuteNonQuery()
    16. Catch ex As Exception
    17. MessageBox.Show(ex.Message)
    18. Finally
    19. dt.Clear()
    20. da.Fill(dt)
    21. sqlcmd.Connection.Close()
    22. End Try
    23. End Sub



    freue mich über hilfe. danke
    :)
    Wo ist der Rest vom Code? Es fehlen die Deklarationen und Instanzierunungen von

    - dt
    - da
    - sqlcmd
    - c


    Laut Fehler wurde „da“wohl etwas nicht zugewiesen. Zudem fehlt da ein „where“ im SQL Statement, daher werden alle Datensätze aktualisiert/überschrieben. Auf sql injections (google mal) muss ich dich auch noch hinweisen.

    "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
    hier ist der überarbeitete code. leider habe ich immernoch das problem mit folgender fehlermeldung: SelectCommand-Eigenschaft wurde nicht initialisiert

    diese kommt in der zeile:

    VB.NET-Quellcode

    1. da.Fill(dt)


    hier nochmals der code:

    VB.NET-Quellcode

    1. Dim dt As New DataTable
    2. Dim bs As New BindingSource
    3. Dim da As New SqlClient.SqlDataAdapter
    4. Dim sqlcmd As New System.Data.SqlClient.SqlCommand
    5. Dim c As New SqlClient.SqlConnection
    6. Dim ds As New DataSet
    7. Dim b As Binding


    VB.NET-Quellcode

    1. Sub frm_laden()
    2. sqlcmd.Connection = c
    3. c.ConnectionString = "Data Source=DESKTOP-3IQMJA7\SQLE;Initial Catalog=umanager;Integrated Security=True;"
    4. c.Open()
    5. Dim da As New SqlClient.SqlDataAdapter
    6. da.SelectCommand = (New SqlClient.SqlCommand("SELECT * FROM kundendaten_um", c))
    7. da.Fill(dt)
    8. c.Close()
    9. Try
    10. bs.DataSource = dt
    11. b = New Binding("Text", bs, "Kundennr")
    12. Me.txtkundennr.DataBindings.Add(b)
    13. b = New Binding("Text", bs, "vorname")
    14. Me.txtVorname.DataBindings.Add(b)
    15. b = New Binding("Text", bs, "nachname")
    16. Me.txtNachname.DataBindings.Add(b)
    17. b = New Binding("Text", bs, "geburtstag")
    18. Me.txtGeburtstag.DataBindings.Add(b)
    19. b = New Binding("Text", bs, "email")
    20. Me.txtEmail.DataBindings.Add(b)
    21. b = New Binding("Text", bs, "anschrift")
    22. Me.txtStrasse.DataBindings.Add(b)
    23. b = New Binding("Text", bs, "plz")
    24. Me.txtPLZ.DataBindings.Add(b)
    25. b = New Binding("Text", bs, "ort")
    26. Me.txtOrt.DataBindings.Add(b)
    27. b = New Binding("Text", bs, "beschreibung")
    28. Me.rtb_notice_kd.DataBindings.Add(b)
    29. b = New Binding("Text", bs, "ID")
    30. Me.txt_ID.DataBindings.Add(b)
    31. Catch ex As Exception
    32. MsgBox(ex.ToString)
    33. End Try
    34. End Sub


    VB.NET-Quellcode

    1. Private Sub btn_aktualisieren_Click(sender As Object, e As EventArgs) Handles btn_aktualisieren.Click
    2. sqlCmd.Connection = c
    3. 'Datensatz mit UPDATE aktualisieren
    4. sqlcmd.CommandText = "UPDATE kundendaten_um SET Kundennr = '" & txtkundennr.Text _
    5. & "', vorname = '" & txtVorname.Text _
    6. & "', nachname = '" & txtNachname.Text _
    7. & "', geburtstag = '" & txtGeburtstag.Text _
    8. & "', email = '" & txtEmail.Text _
    9. & "', anschrift = '" & txtStrasse.Text _
    10. & "', plz = '" & txtPLZ.Text _
    11. & "', beschreibung = '" & rtb_notice_kd.Text _
    12. & "', ort = '" & txtOrt.Text & "'" _
    13. & " WHERE Kundennr = " & txtkundennr.Text
    14. Try
    15. sqlcmd.Connection.Open()
    16. sqlcmd.ExecuteNonQuery()
    17. Catch ex As Exception
    18. MessageBox.Show(ex.Message)
    19. Finally
    20. dt.Clear()
    21. da.Fill(dt)
    22. sqlcmd.Connection.Close()
    23. End Try
    24. End Sub
    ähm - die Fehlerzeile kommt im gezeigten Code 2 mal vor - bei welcher Zeile nu?

    Und grosse Bitte: Hau endlich mal die bescheuerten TryCatches weg - die nützen dir nicht die Bohne.
    TryCatch ist ein heißes Eisen , und ohne durchdachtes Konzept sollte man unbedingt die Finger davon lassen!
    Und eine MsgBox ist kein Konzept, sondern nur Beweis der Abwesenheit eines solchen.
    jo, dann vergleiche mal frm_laden() mit btn_aktualisieren(), und wirst feststellen, dass die Fehlermeldung nichts anders tut, als den Fehler zu melden: In frm_laden() wird das SelectCommand initialisiert, in btn_aktualisieren() hingegen nicht.
    Oder setze einen Haltepunkt in den beiden Methoden, und guck im Lokalfenster nach, was da jeweils in da.SelectCommand drinne ist.
    Haltepunkt + Lokalfenster kennste vmtl. garnet - das täte sich für dich sicherlich überaus super lohnen, es kennenzulernen: VisualStudio richtig nutzen (Google ist nicht deine Mami)