Datenzugriff mit ADO.NET und .NET Core

Verbindungsaufbau mit SqlConnection

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Thorsten Kansy zeigt die Best-Practice-Vorgehensweise, um eine Verbindung zum DB-Server aufzubauen. In diesem ersten Schritt erfahren Sie auch gleich, wie man den Connection-String samt Username und Passwort in den C#-Code einbettet.
06:18

Transkript

So, und damit steht einer ersten Verbindung nichts mehr im Weg. Ich werde jetzt für dieses und für die folgenden Beispiele die von mir eingerichtete SQL-vNext-Docker-Image-Instanz verwenden, aber es spricht nichts dagegen, dass Sie eine lokale Installation benutzen, oder dass Sie eine SQL-Azure-Instanz verwenden, all das ist letztendlich für das, was wir machen, relativ unerheblich. So, das heißt, als nächstes muss ich mit Objekten hantieren, die mit DbConnection oder die von DbConnection ableiten, das heißt, es ist für den SQL-Server das SQL-Connection-Objekt. Und das wiederum bedeutet, dass ich im Wesentlichen dieser Klasse einen Connection-String geben muss, der kommt häufig aus der Konfiguration. Ich zeige Ihnen auch gleich mal, wie die Konfiguration läuft, unter .NET Core. Dann wird diese Verbindung geöffnet, was möglicherweise zu dem Anlegen einer neuen Verbindung zum Server führt. Ich sage deswegen möglicherweise, weil es besteht auch die Option, dass bestehende Verbindungen verwendet werden, aus Performance-Gründen, da komme ich später beim Connection-Pooling noch mal drauf zu sprechen. Dann wird dann entsprechend eine Abfrage ausgeführt und wenn ich fertig bin, dann wird die Verbindung geschlossen. Das kann man in Ausnahmefällen machen, indem man ein "close" entsprechend aufruft, also, die Methode heißt dann "close". Viel besser ist es aber, wenn ich alles in einem "using"-Block packe und dadurch über "IDisposable" die Verbindung geschlossen wird. So, wie das aussieht, zeige ich Ihnen jetzt im Visual Studio. Und damit kein Chaos herrscht, habe ich einfach ein neues Projekt angefangen. Ich hab' nichts weiter gemacht, als dass ich der Solution ein weiteres Projekt noch hinzugefügt habe. Das ist eins der Projekte, die Sie auch als Download für diesen Kurs mitbekommen. Das ist ein Datenbank-Projekt, da befindet sich quasi die Datenbank, die wir letztendlich benutzen für die Zugriffe. Das ist, denke ich, ein wirklich notwendiges Übel, sonst müssten wir jetzt auf die Datenbank zugreifen an der Stelle. Das heißt, auf die Datenbank hier unten. beziehungsweise auf das Projekt und die Datenbank darin komme ich dann später noch mal zu sprechen. So, da ich nichts gemacht habe, möchte ich aber trotzdem hier noch einige Einstellungen vornehmen, nämlich möchte ich auf das ".NETCoreApp 1.1" gehen, einmal speichern. Und ich muss erst einmal das notwendige "NuGet Package" hinzufügen. Und zwar brauche ich "system.data", da unten kommt es schon, "System.Data.SqlClient". Das füge ich hinzu, sage "Installieren". "OK", akzeptiere ich. Dauert einen kleinen Moment. Dann kann ich hier quasi loslegen. Was ich brauche, ist ein Objekt vom Typ "SqlConnection" ungefähr so in der Art. Sie sehen, das funktioniert nicht, das liegt aber in dem Fall daran, dass entsprechend die Namespaces nicht vorhanden sind. Wenn Sie auf "Strg+." drücken, kriegen Sie dieses kleine Menü, da kann ich sagen "using System.Data.Sqlclient" und die Anweisung wird dann hier oben hinzugefügt. Auf die Art und Weise möchte ich es aber auch nicht haben. ich möchte einen "using"-Block darum schreiben, das heißt, ich gehe hin und vervollständige meinen Code ein wenig. damit habe ich nicht mehr das Problem, dass ich mich selber um das Schließen der Verbindung kümmern muss. Das macht beim Verlassen, egal ob im regulären oder im Fehlerfall. das Framework an der Stelle. Das heißt, ich muss jetzt hier nicht mehr hingehen und mir über so Dinge Gedanken machen. Als nächstes muss ich einen Connection-String haben und Sie sehen, den habe ich noch nicht. Ich gehe jetzt erstmal recht einfach vor. Ich gehe einfach hin und mache einfach hier eine Konstante rein. Connection-String soll "cs" heißen. Wie in der guten Kochsendung habe ich da mal was vorbereitet, allerdings passt es noch nicht so ganz. Letztendlich greife ich auf die falsche Instanz zu, das muss ich korrigieren. Ich muss auf "localhost", Port 2433 zugreifen. Die Datenbank habe ich auch noch nicht. Deshalb werde ich für den ersten Schritt "master" behilfsweise reinschreiben. Dann findet die Anmeldung nicht statt durch "integrated security", sondern ich muss einen User angeben, das war der "SA". und ich muss ein Passwort eingeben und das war... Moment, kurz selbst konzentriert mal an der Stelle. Das Passwort sollte so aussehen, plus 99 hinten dran. Das heißt, ich kann den Connection-String so wie er ist benutzen, hier als Parameter übergeben und dann innerhalb des "using"-Blocks die Verbindung aufbauen. Pessimistisch wie ich bin, setze ich hier erstmal ein Breakpoint, lasse das laufen. Und letztendlich sollte nach einigen Sekunden hier ein Halt eingeschoben werden. Wenn ich jetzt weitergehe, sehe ich, ich bekomme keinen Fehler, das heißt, es scheint. zumindest halbwegs sinnvoll zu sein, was ich in den Connection-String geschrieben habe. Und wenn ich auf das Objekt selber hier gehe, auf das "con"-Objekt, dann sehe ich, dass ich hier ein "State" habe von "Open", dass die Server-Version 14.0 ist, das ist schon mal ganz gut. das ist die interne Nummer von SQL-vNext. insofern eigentlich schon eine ganz schöne Geschichte. Im Gegentest, ich zerlege einfach mal das Kennwort und schaue mal, wie es dann ausschaut. Jetzt müsste es eigentlich zu einer Exception kommen, genau. "System.Data.SqlClient.SqlException" und der Text sagt "Login failed for user 'sa'". Na, das passt. Ich habe schließlich das Kennwort gerade ruiniert. Das heißt, die erste Verbindung funktioniert soweit. Der nächste Schritt wird sein, auch eine richtige Datenbank verwenden zu können.

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!