Technische Universität München Datenbanken Proseminar Objektorientiertes Programmieren mit .NET und C# Tien Vu Institut für Informatik Software & Systems Engineering Technische Universität München Gliederung 1. ADO.NET 1. Daten Anbieter 1. 2. 3. 4. SqlConnection SqlCommand DataReader DataAdapter 2. Daten Manipulierer - DataSet 3. DataReader oder DataSet 2. Entity Framework 1. Model-first-Ansatz 2. Database-first-Ansatz 3. LinQ to Entity 01.12.2011 Tien Vu - Datenbanken 2 Technische Universität München 1. ADO .NET Alle ADO.NET-Klassen, die für den Zugriff auf den SQL Server notwendig sind, um auf Daten zuzugreifen befinden sich im Namespace System.Data.SqlClient 01.12.2011 Tien Vu - Datenbanken 3 Technische Universität München 1.1. Data Provider Object Aufgabe Connection Die Verbindung zu einem Datenbanksystem herstellen Command Befehlen wie Insert, Update, Delete… ausführen DataReader Liest einen read-only Reihe von Daten aus einer Datenquelle DataAdapter DataSet mit den Daten von DataReader ausfüllen und Aktuallisierung mit Datenbank auflösen. 01.12.2011 Tien Vu - Datenbanken 4 Technische Universität München 1.1.1. SqlConnection ConnectionString : ConnectionStringBuilder : Der ConnectionStringBuilder-Objekt bietet die Möglichkeit, die Verbindungsinformationen aus einer Konfigurationsdatei herauszunehmen oder die Logindaten per Eingabe zu bekommen 01.12.2011 Tien Vu - Datenbanken 5 Technische Universität München 1.1.1. SqlConnection Instanz erzeugen und Verbindung mittels Open() öffnen Mit using keyword müssen wir nicht mehr um das Schließen des Connection kümmern 01.12.2011 Tien Vu - Datenbanken 6 Technische Universität München 1.1.2. Die SqlCommand- Klasse Die Klasse System.Data.SqlClient.SqlCommand wird zum Ausführen von Abfrage oder Aufuf von gespeicherten Prozeduren benutzt. Eine gültige, geöffnete Verbindung ( ein SqlConnection-Objekt) und den Text der Abfrage werden benötigt. Weil ein SqlCommand-Objekt immer eine Verbindung braucht, hat die SqlConnection-Klasse die Methode CreateCommand(), die alles Notwendige erledigt und ein einsatzbereites Objekt zurückliefert. 01.12.2011 Tien Vu - Datenbanken 7 Technische Universität München 1.1.2. SqlCommand - Klasse 01.12.2011 Tien Vu - Datenbanken 8 Technische Universität München 1.1.3. DataReader - Klasse Daten, die wir von DataReader bekommen können nicht geändert, sondern nur gelesen werden. Die DataReader-Klasse kann nicht direct mit dem new-Schüsselwort erzeugt werden, sondern wird von einem Command-Object als Rückgabewert der ExecuteReader()-Methode geliefert 01.12.2011 Tien Vu - Datenbanken 9 Technische Universität München 1.1.4. DataAdapter dient dem automatischen Befüllen eines DataSet und dem späteren Schreiben des vorgenommenen Änderungen in die Datenbank. Will man die Daten in DataSet neu laden oder aktualisieren, nimmt man die Fill() Methode Soll die Daten, die bereits im DataSet geändert wurde, zurück in Datenbank schreiben, wird die Update() Methode benutzt 01.12.2011 Tien Vu - Datenbanken 10 Technische Universität München 1.2. DataSet ist eine Offline-Datenmenge die Daten im DataSet kann beliebig zugegriffen werden kann mit mehreren und unterschiedlichen Datenquellen verwendet werden, mit XML-Daten oder Daten vor Ort, um die Anwendung zu verwalten. Empfehlen : http://msdn.microsoft.com/en-en/library/zb0sdh0b.aspx 01.12.2011 Tien Vu - Datenbanken 11 Technische Universität München 1.2. DataSet Nachdem wir DataSet mit DataAdapter gefüllt haben, können wir gleich die Daten benutzen 01.12.2011 Tien Vu - Datenbanken 12 Technische Universität München 1.3. DataReader oder DataSet DataSet DataReader Lese-und Schreibezugriff Nur Lesezugriff Unterstützt mehrere Tabellen von verschiedene Datenbank Unterstützt lediglich eine Tabelle, die auf einer einzigen SQL-Abfrage basiert Funktioniert ohne Verbindung Unterstützt Vorwärts- und Rückwärtsdatenscannen Nur Vorwärtsdatenscannen Langsamer Zugriff Schnellerer Zugriff auf Daten Unterstützt bei Visual .Net Tools Muss manuell kodieren 01.12.2011 Tien Vu - Datenbanken 13 Technische Universität München 2. Entity Framework Definition : Entity Framework ist ein O/R-Mapper, der seit .NET Framework 3.5 Service Pack 1 von Microsoft geboten werden. O/R-Mapper steht für Objektrelationaler Mapper, er stellt eine Schicht zwischen Anwendung und Datenbank dar. 01.12.2011 Tien Vu - Datenbanken 14 Technische Universität München 2. Entity Framework Warum O/R-Mapping bzw. Entity Framework überhaupt? Der Hauptgrund ist ganz einfach : schnellere Entwicklung mit weniger Fehler potenzial : – Das System erzeugt die Objekten automatisch, verfolgt die Änderung von die Objekten und führt die Aktualisierung automatisch aus. – Es ist möglich, auf Spalten einer Tabellenzeile als Eigenschaft einer Klasse zuzugreifen. Die gesamte Tabelle wird als Auflistung von Instanzen dieser Klasse dargestellt. – Die Datenbank im Hintergrund ist stark abstrahiert, deswegen ist es denkbar, Anwendungen zu schreiben, die völlig unabhängig von der verwendeten Datenbanktechnologie sind. 01.12.2011 Tien Vu - Datenbanken 15 Technische Universität München 2. Entity Framework 01.12.2011 Tien Vu - Datenbanken 16 Technische Universität München 2. Entity Framework Neu Entity Data Model einfügen 01.12.2011 Tien Vu - Datenbanken 17 Technische Universität München 2. Entity Framework „Generate from Database“ – Database-first-Ansatz „Empty Model“ – Model-first-Ansatz 01.12.2011 Tien Vu - Datenbanken 18 Technische Universität München 2.1. Model-first-Ansatz 01.12.2011 Tien Vu - Datenbanken 19 Technische Universität München 2.1. Model-first-Ansatz Datenverbindung Connection String 01.12.2011 Tien Vu - Datenbanken 20 Technische Universität München 2.1. Model-first-Ansatz 01.12.2011 Tien Vu - Datenbanken 21 Technische Universität München 2.2. Database-first-Ansatz 01.12.2011 Tien Vu - Datenbanken 22 Technische Universität München 2.2. Database-first-Ansatz 01.12.2011 Tien Vu - Datenbanken 23 Technische Universität München 2.3. LinQ to Entity Beispiel : 01.12.2011 Tien Vu - Datenbanken 24 Technische Universität München End Vielen Dank für eure Aufmerksamkeit Frage? 01.12.2011 Tien Vu - Datenbanken 25