Announcement

Collapse
No announcement yet.

Uebertragung / Update eines Datasets zurueck zur DB

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Uebertragung / Update eines Datasets zurueck zur DB

    Hi,

    ich habe mir ein Dataset gefuellt, welches das gleiche Schema wie meine Datenbank hat, nun will ich das Dataset im ganzen in die DB schreiben, geht das einfacher als fuer jede Tabelle zu pruefen, ob es inserts oder updates gegeben hat ?

    Danke fuer jede Hilfe
    -----------------------------------------------------------

    # Man kann sein Geld auch zum
    # Windows hinauswerfen!!!

    () ()
    (^^)
    (n n)
    -----------------------------------------------------------

  • #2
    Wenn Du für jede Tabelle einen eigenen DbDataAdapter mit passenden InsertCommand und UpdateCommand hast, geht das ganz einfach:
    Code:
    if (Table1.HasChanges())
        adapterTable1.Update(Table1);
    if (Table2.HasChanges())
        adapterTable2.Update(Table2);
    Der DbDataAdapter bearbeitet nur geänderte Tabellen und Zeilen. Auf HasChanges() kann deshalb eigentlich auch verzichtet werden; ich weiß nicht, welches Verfahren schneller ist.

    Ohne DbDataAdapter kannst Du "normale" DbCommands verwenden. Dann musst Du jede Zeile einzeln prüfen; dafür kannst Du RowState abfragen:
    Code:
    if (Table1.HasChanges()) {
        foreach(DataRow row in Table1.Rows) {
            if (row.RowState == RowState.Added)
                //  in die DbParameter des DbCommand für den Insert-Befehl eintragen; dann:
                insCmd.ExecuteNonQuery();
            else if   // usw. analog
        }
    }
    Gruß Jürgen

    Comment


    • #3
      Nicht das meine Antwort jetzt besonders hilfreich ist aber in VS2008 wird es einen TableAdapterManager geben.

      Ein einfaches

      TableAdapterManager.UpdateAll(Dataset)

      wäre also dort die Lösung wenn du ein typisiertes Dataset mit Tableadaptern verwendest. Der TableAdapterManager löst sogar die korrekte Updatereihenfolge
      der enthaltenen Dataset auf.

      Wenn du reichlich Forscherdrang mitbringst könntest du den Code des TableAdapterManager aus VS2008 einfach in VS2005 übernehmen. So beim kurzen drüberschauen enthält der keine Magie die es nicht auch schon in VS2005 gab.

      Gruß
      Ralf

      Comment


      • #4
        Danke erstmal, aber es wird mir wenig weilterhelfen. Da ich mein Dataset selber mit einer Klasse komplett mit einer DB spiegele da muesste ich dann um die Update und Insert befehle korrekt ausfuehren zu koennen alles Datensaetze auf anderungen bzw. testen ob neue Datensaetze hinzugefuegt wurden.
        -----------------------------------------------------------

        # Man kann sein Geld auch zum
        # Windows hinauswerfen!!!

        () ()
        (^^)
        (n n)
        -----------------------------------------------------------

        Comment

        Working...
        X