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 Zitieren
dark-man Geschrieben 29. August 2008 Geschrieben 29. August 2008 Hallo, versuch mal ein command.Transaction.Commit(); um die Tranaktion zu bestätigen Zitieren
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. Zitieren
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. Zitieren
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 Zitieren
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 Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.