Schreiben in SQL 2008 Datenbank Tabelle

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Marsianer.

    Schreiben in SQL 2008 Datenbank Tabelle

    Hallo,

    ich bastel gerade in meinem Programm und komme an der stelle nicht weiter wo ich in die DB Tabelle schreiben kann. Die Verbindung ist da wenn ich meine Felder ausfülle werden diese sauber in ein DataGridview übertragen aber diese werden nicht in die DB übertragen die bleibt leer.

    Hier mein Quellcode:


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim newftinessRow As fitnessDataSet.bmiRow
    newftinessRow = Me.FitnessDataSet.bmi.NewbmiRow()
    With newftinessRow
    .Item("id") = -1
    .Item("Gewicht") = txtGewicht.Text
    .Item("Groesse") = txtGroesse.Text
    .Item("Ergebniss") = lblErgebniss.Text
    .Item("Alter") = txtAlter.Text
    .Item("Einschätzung") = lblBMI.Text
    End With
    FitnessDataSet.bmi.Rows.Add(newftinessRow)
    Me.FitnessDataSet.EndInit()
    Me.BmiBindingSource.EndEdit()
    Me.BmiTableAdapter.Update(Me.FitnessDataSet.bmi)
    End Sub

    Ich bin über jede Hilfe dankbar.

    Michael Peter

    ErfinderDesRades schrieb:

    insgesamt ist das komisch, für einen einzigen Datensatz den TableAdapter abzufahren.

    Nö, machich auch so. Ist zwar der Holzhammer, aber eigentlich funktionierts :D .

    Nu zum Problem, bin zwar auch Anfänger, aber habe mich durch diesen Kram durchbeißen müssen:
    Woran ist denn dein DataGridView gebunden, wenns die Daten anzeigt?
    Ansonsten ist mir aufgefallen, dass du zwar ein Update für die BMI-Geschichte machst, aber nicht fürs Fitnessdataset. Bin mir nicht sicher, aber daran könnts liegen, weil deine Daten dann im DataSet versauern und nich in die DB zurückgeschrieben werden. Wenn das DGV ans DataSet gebunden ist, dann is klar, dasses die Daten anzeigt. Die gehen aber am Ende wieder verloren. Prüf das mal bitte. Ich hab das gelöst über einen TableAdapterManager, der mit UpdateAll() alle TableAdapter abrasiert und die Daten in die DB schreibt. Kannste aber - wenn gewollt - auch über die einzelnen Adapter machen.
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D
    Klar funktioniert das, aber ohne das tätes ebensogut funktionieren, evtl. gar praktischer.
    Wenn du jede Zufügung speicherst- speicherst du dann auch jedes Löschen eines Datensatzes? Und auch jedes Ändern einer Eigenschaft?

    Weil brauchen brauchst du das nicht. Dataset hat sog. "ChangeTracking" eingebaut, also ein automatisches Protokollieren jeder Änderung gegenüber der DB.

    Also kann man problemlos an bestimmten sinnvollen Punkten im Workflow ein "Speicher alles in einem Rutsch" programmieren.
    Standardmäßig würde ich hierfür das Klicken auf den Save-Button vorschlagen, und auch das Schließen des Forms, aber es können auch andere WorkFlow-Punkte sinnvoll sein, etwa vor Neu-/Teil-Befüllung von Tabellen.

    Jdfs. wenn du nicht jede Änderung sofort wegschreibst (also Add, Delete, Modify), dann brauchst du an den genannten Punkten die "Speicher alles in einem Rutsch"-Funktionalität sowieso, dass keine Eingaben verloren gehen - und dann kannste das "Speicher jedesmal jede Änderung sofort" auch weglassen.

    (Es sei denn, du rechnest jede Sekunde damit, dass das Prog abstürzt ;))
    Haste ja im Grund recht ;) . Allerdings darf man dann das Rückschreiben an allen relevanten Punkten des Workflows nicht vergessen. Ich vermute ja, dass das hier bei diesem konkreten Problem passiert ist.
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D