Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Datenzugriff mit ADO.NET und .NET Core

Anweisungen per SqlCommand ausführen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die Klasse SqlCommand dient zur Instanziierung eines SQL-Statements. In diesem Video zeigt der Trainer, wie das mit der Methode ExecuteNonQuery() gelingt, die SQL-Statements ohne Abfrage auf dem Server ausführt.
04:53

Transkript

So, und damit sind wir so weit, um mit unserer Verbindung auch etwas ausführen zu können, dafür brauchen wir allerdings noch ein anderes Objekt, nämlich entsprechend das DbCommand-Objekt bzw. SqlCommand-Objekt für einen SQL-Server, und diesem Objekt übergebe ich neben der Verbindung, den Command-Text, also was ich ausführen möchte und den CommandType, also um welche Art es sich handelt. CommandType kann ein Text sein, das ist eine Ad-hoc-Abfrage, kann eine Prozedur sein, das ist in der Regel eine gespeicherte Prozedur und kann rein theoretisch auch eine Tabelle sein, das allerdings funktioniert bei den wenigsten Providern. Wenn ich also eine Abfrage mache und einfach den CommandType "Table" auswähle, dann bekomme ich bei der Laufzeit automatisch einen Fehler. Das heißt, ich habe faktisch eigentlich Text und "Procedure" zur Auswahl. Dann muss ich natürlich den Command-Text angeben, und das kann durchaus der Text der Abfrage selber sein, im Fall einer Ad-hoc-Abfrage der Prozedurname und wie gesagt rein theoretisch auch der Name der Tabelle. Wieder im Visual Studio sehen Sie, dass ich einiges aufgeräumt habe, die ganze Konfiguration, also die Methode und eine Eigenschaft, um auf den Connection String für meine ADO.NET-Tests zuzugreifen, entsprechend hier in dieser "region" versteckt, das ist die Eigenschaft auf die ich dann zugreifen kann, wenn es darum geht, an den Connection String heranzukommen. So, das heißt, ich könnte jetzt hier anfangen, ein Demo zu schreiben, das heißt, ich hätte die Möglichkeit zu sagen, "DemoExecuteNonQuery", und kann mir die Methode anlegen lassen. "Strg+." Und kann hier mit der Implementierung anfangen. Zunächst einmal brauche ich eine Anweisung, die ich ausführen möchte, und da könnte ich sagen "DELETE Top (100) from dbo.names", die Tabelle sollte in meiner Datenbank vorhanden sein, ich könnte versuchen mit dem SQL Server Object Explorer, hier im Visual Studio zurecht zu kommen, der kann allerdings noch nicht auf vNext zugreifen, insofern das funktioniert nicht. Ich gehe mal kurz hier in mein Management Studio, da sehen Sie, das ist die Datenbank, das ist die Tabelle, können kurz mal "select count" absetzen, und es sollten einige Zeilen vorhanden sein, sind es auch, sofern da kann ich jetzt hundert Stück davon löschen, es sind genügend, sodas ich auf welche verzichten kann, so, dann kann ich eine Connection aufbauen, übergebe als Connection String die Eigenschaft, die mir das aus dem JSON rausliest, öffne die Verbindung, so weit, so gut, und fange jetzt an, "SqlCommand"-Objekt zu verwenden, indem ich sage "con.CreateCommand". Es gibt mehrere Möglichkeiten, das erscheint mir relativ elegant an der Stelle, und dann kann ich sagen, dem Command-Objekt, welchen Typ ich gerne hätte; das soll ein Text werden. Und ich kann ihm sagen, wie der Text lautet oder ich muss ihm sagen wie der Text lautet, und kann dann sagen, "ExecuteNonQuery", das heißt, führe etwas aus, was dir keine Daten zurückliefert, sondern schlicht und ergreifend, wenn ich hier mit der Maus mal drübergehe, dann entsprechend die "rows affected", das heißt, wieviel er in der Tat gelöscht hat, und die kann ich mir, wenn ich möchte, dann in eine Integer-Variable zurückholen. Aber es wird ansonsten nichts abgefragt, sondern schlicht und ergreifend nur etwas ausgeführt. So, dann mache ich hier einen Breakpoint rein, lasse das Ganze laufen, habe irgendwo einen Fehler, was sagt er? Irgendwo fehlt ein ... Ja stimmt. So simpel. Ein Semikolon. Und dann führt er entsprechend die Anweisung aus, und wenn ich alles richtig gemacht habe, dann sollten jetzt hier in meiner Tabelle hundert Zeilen weniger sein, ich habe gerade... ich kopiere mal die Anzahl hier raus. Führe das Statement noch mal aus. Und Sie sehen, in der Tat, es fehlen einige und zum Glück auch genau hundert. Das passt also. Das heißt, das ist das grundlegende Vorgehen, ich erzeuge ein Sql Command Objekt und gebe dem die notwendigen Informationen, also "CommandType", "CommandText" mit, und führe den dann auf eine mir liebe Art und Weise aus, das heißt, je nachdem, was ich benötige, kann ich sagen, ich möchte halt in dem Fall nur etwas ausführen, was keine Abfrage ist, also was mir keine Daten liefert, sondern nur so was, was "rows affected" möglicherweise.

Datenzugriff mit ADO.NET und .NET Core

Lernen Sie, wie mit Ihrer .NET Core-Anwendung auf relationale Datenbanken wie z.B. SQL Server oder SQLite zugreifen.

2 Std. 49 min (28 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:12.04.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!