Tastenstreichler Geschrieben 29. August 2008 Geschrieben 29. August 2008 Hallo, ich habe folgendes Problem: Aus einer Oracle-DB sollen DS mit einer SQL-Anweisung gelöscht werden. Meine SQL-Anweisung ist ok, und die Verbindung zur DB läuft ohne Probleme eine vorherige Ansicht der DS mit SELECT klappt auch. Leider funktioniert aber das löschen nicht, obwohl ich auch keine Fehlermeldung bekomme. Deshalb habe ich mal den Code kurz kopiert: ---- try{ OracleCommand command = new OracleCommand(del ,connection); OracleDataAdapter adapter = new OracleDataAdapter(); adapter.DeleteCommand = command; } catch {...} ---- conn - ist eine bestehende Verbindung del - enthält den vollständigen SQL-String Wer hat eine Idee??? Danke, Tastenstreichler
dark-man Geschrieben 29. August 2008 Geschrieben 29. August 2008 Hallo, versuch mal ein command.Transaction.Commit(); um die Tranaktion zu bestätigen
Tastenstreichler Geschrieben 29. August 2008 Autor Geschrieben 29. August 2008 Hallo, hat leider nichts gebracht. Ich werde mich jetzt auf das Wochenende vorbereiten und vielleicht finde ich ja hier am Montag einen Gedankenhüpfer. Allen ein schönes Wochenende, Tastenstreichler.
TDM Geschrieben 29. August 2008 Geschrieben 29. August 2008 Du setzt das Command nur, du führst es nicht aus. Entweder über Execute oder über Update das Query ausführen lassen.
Tastenstreichler Geschrieben 1. September 2008 Autor Geschrieben 1. September 2008 Oh Mann, :upps ich bin ja so ein Trottel. Nachdem ich das vorgeschlagene ExecuteNonQuery() noch drangehängt habe läuft es wie geschmiert. DANKE, :e@sy Tastenstreichler
Argbeil Geschrieben 2. September 2008 Geschrieben 2. September 2008 Hi, über das ExcecuteNonQuery geht es zwar, ist aber trotzdem falsch. Du schreibst das Delete Command in einen DataAdapter, der dient aber eigentlich nur zur Verbindung von Dataset und Datenbank. Du brauchst weder Dataset noch DataAdapter. Zufälligerweise enthält der DA 4 SQLCommand Objekte, deswegen funktioniert es auch wenn du, wie in deinem Fall, das DeleteCommand vergewaltigst. Das DeleteCommand ist eigentlich das Kommando das ausgeführt wird wenn du DataRows aus dem DataSet gelöscht hast und diese jetzt mit der DB synchronisieren willst. Um es abzukürzen: Die korrekte Anweisung lautet: OracleCommand cmd = new OracleCommand( commandString, connection ); try { connection.Open(); cmd.ExcecuteNonQuery(); } finally { cmd.Dispose(); connection.Close(); } Du solltest dich unbedingt mit den Konzepten von ADO.NET auseinandersetzen, die zusammengefrickelten Programme werden sonst unwartbar. Als Lesestoff kann ich empfehlen: Programming ADO.NET 2.0 Core Reference von Microsoft Press
Tastenstreichler Geschrieben 3. September 2008 Autor Geschrieben 3. September 2008 Danke für den Tipp. Ich bin nach meinen gestrigen 12 Stundentag erst heute dazugekommen es zu lesen. :schlaf: Und ich muss gestehen, dass ich mindestens 10 Minuten gebraucht habe, um Deine Kritik zu verstehen (immerhin heute auch schon wieder 9 h am Rechner :schlaf::schlaf:). Ich habe jetzt das Programm geändert und muss gestehen es sieht gleich viel vernünftiger aus. Wie Du richtig erkannt hast bin ich noch nicht besonders versiert in ADO.NET. Also nochmal vielen Dank an alle, die mir geholfen haben. Tastenstreichler
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden