none
Update-Methode des typ. Datasets.Tableadapter RRS feed

  • Frage

  • Hallo,

    Ich habe ein typ. Dataset das auf eine SQL-Datenbank zugreift.

    Nun möchte ich über die Updatemethode die DB aktualisieren.

    Da die Updatemethode ja 6 fach überladen ist habe ich mehrere Möglichkeiten dies zu realisieren.

    Einmal in dem ich jede einzelne Spalte anspreche :

    • ta.update(Wert1,Wert2,Wert3)

    dies funktioniert auch erst mal einwand frei.

    zweitens kann ich eine DataRow übergeben :

    • Dim dt as new BeispielDataset.Beispieldatatable
    • Dim Datenreihe as BeispielDataset.Beispielrow
    • Datenreihe = dt.newrow
    • ta.update(Datenreihe)

    Hier aktualisiert er leider nichts

    oder gleich die ganze Tabelle :

    • ta.update(dt)

    Hier fügt er einfach eine komplett neue Datenreihe ein obwohl diese bereits existiert

    was muss ich den beachten wenn ich der Update Methode eine dt od. row über gebe

    woran erkennt er das Welches das Identitätsfeld ist ?

    Vielen Dank für die Unterstützung

    Gruß

    Daniel


    • Bearbeitet Daniel, Freitag, 15. März 2013 08:22
    Freitag, 15. März 2013 08:20

Antworten

  • Hallo Daniel,

    bei zweitens musst Du die Datenreihe an die Beispieltabelle anfügen, denn bei NewRow ist sie noch "freischwebend". Die Table/DataAdapter benötigen intern den Zugriff auf die DataTable. Luftcode für oben:

        Dim dt as new BeispielDataset.Beispieldatatable
        Dim Datenreihe as BeispielDataset.Beispielrow
        Dim Datenreihe = dt.NewBeispielrow 	' typisierte Version von NewRow
        ' ... Werte zuweisen
        dt.AddBeispielrow(Datenreihe)	' An Tabelle anfügen
        ta.update(Datenreihe)

    Verwenden solltest Du dabei - wie oben angedeutet - die typisierten Varianten. Damit kannst Du auf die Spalten als Eigenschaften zugreifen.

    Verwendest Du das Aktualisieren über die DataTable, so werden alle Zeilen auf ihren Änderungsstatus überprüft. Alle die neu, geändert oder gelöscht sind, werden entsprechend behandelt.

    Hat eine Zeile den Zustand DataRowState.Added wird nicht geprüft, ob sie bereits vorhanden ist, sondern es wird das InsertCommand ausgeführt. Bei Modified kommt das UpdateCommand und bei Deleted das DeleteCommand zum Tragen

    Eine Identitätsspalte wird durch die AutoIncrement Eigenschaft gekennzeichnet.

    Gruß Elmar

    • Als Antwort markiert Daniel, Freitag, 15. März 2013 11:50
    Freitag, 15. März 2013 08:55