Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[C#] Datensätze aus Oracle-DB löschen

Empfohlene Antworten

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

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.

Vllt. ein Rechteproblem?

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

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.