Dataset in SQL-Datenbank kopieren

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von msDotz.

    ein Dataset enthält mehrere Tabellen - das kann man nicht in eine DB-Tabelle schreiben.
    Ansonsten - wenn ein PrimKey definiert ist - kann man mit weniger als 5 Zeilen eine DataTable in eine DB-Tabelle schubsen:
    • connection bauen, DataAdapter bauen, Commandbuilder bauen
    • connection öffnen, DataAdapter.Update(dataTable) aufrufen, connection schliessen
    • die Dinge, die du nicht mehr brauchst, disposen - ein Using-Block ist da sehr empfehlenswert.
    Es hängt aber auch daran, welchen RowState die Rows inne DataTable haben, weil der DataAdapter führt Insert-Commands nur für DataRows mit Rowstate.Added aus.
    Ich habe nur eine Tabelle im Dataset, aber dass man eine einzelne Tabelle über den DataAdapter schicken kann wusste ich noch nicht.
    Leider habe ich hier den Code nicht vor mir liegen, vor allem wollte ich nicht mit mehreren verschachtelten Schleifen die Zeilen und
    Spalten einzeln übertragen, bzw. erst zu einem SQL-Befehl zusammensetzen.
    Das mit den RowStates werde ich mal probieren, ob es bei mir daran hängt.
    Ich war ca. eine Woche lang an diesem Problem mit dem "Update" gehangen.
    Der Befehl hat einfach gar nichts gemacht. Keine Fehlermeldung und kein Update.
    Heute habe ich dann nochmals alles was davor passiert unter die Lupe genommen
    und tatsächlich gab es Inkonsistenzen mit dem PrimaryKey, ohne dass ich
    eine Meldung bekommen hätte. Im Intellisense konnte ich mir die Table
    anschauen, die zeigte keine Fehler.
    Allgemein bin ich sowieso nicht so zufrieden mit der 2019er Pro-Version.
    Ich hatte zuvor mit 2008 gearbeitet. Jetzt hat meine Abteilung mal ein
    wenig Geld investiert und die neue Version gekauft. Aber alles läuft so
    langsam.
    Die Compilierungszeit ist gefühlsmäßig doppelt so lange.
    Intellisense streikt manchmal.
    Die Hilfelinks über F1 zeigen nur nicht hilfreiche Webseiten.
    Und jetzt noch das mit den unterschlagenen Fehlermeldungen.
    Keine Ahnung ob ich da etwas falsch eingesteltl hatte.
    Hallo zusammen,
    ich hänge an einem ähnlich Problem fest.
    Ich lese eine Exceltabelle in eine Table eines Datsets ein. Das funzt auch.
    Diese Daten sollen jetzt in eine sogn. Importtabelle in Access geschrieben werden.
    Fakt ist, dass diese Importtabelle keine Primarykey besitzt.
    Gibt es eine Möglichkeit den Dataadapter zum UPDate zu bewegen obwohl der PK fehlt?
    Im Moment schreibt er absolut nix in die Datenbank.
    Diese Übertragung der Daten hat in der alten Version des Programmes mit einem DAO.Execute() super funktioniert.
    SQL-String bestand aus einem INSERT INTO und einem SELECT aus der Exceldatei.
    Bei der Verarbeitung geht es monatlich um ca. 10000 Datensätze.
    Ich will halt auch weg von einigen Routinen die sich noch mit Recordset herumschlagen.

    Bin für jeden Tipp dankbar. Warsteinlich ist die Lösung ganz trivial.
    Danke vorab.
    msdotz
    ch schreib ma iwas direkt und ungetestet hier rein:

    VB.NET-Quellcode

    1. 'Command erstellen, mit Connection und CommandText
    2. using cmd = new OleDbCommand("Select * from MyImportTabelle", myCon), adp = new OleDbDataAdapter(cmd), cmdbuilder = new OleDbCommandbuilder(adp)
    3. myCon.Open
    4. adp.Update(myDataTable)
    5. End using
    Ich sags gleichma prophylaktisch: Bitte keinen TryCatch hinmachen, sondern Fehler beheben, statt zu fangen (und nicht zu beheben).