1 Softwareentwicklung mit.NET Teil 4 ADO.NET Dr. Ralph Zeller.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Objektrelationales Mapping mit JPA
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
Datenbanken Einführung.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Objekt – Relationales – Modell Tomasz Makowski IN
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
MSDN TechTalk – März 2002 ADO.NET 1
SQL Server 2005 Übersicht für Entwickler Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
MySQL.
Allgemeine Technologien II
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
SendEplanung Datenbank
XINDICE The Apache XML Project Name: Jacqueline Langhorst
SQL als Abfragesprache
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Introducing the .NET Framework
Datenintegrität Referentielle Integrität create table
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
JDBC EDV JDBC.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Einführung MySQL mit PHP
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
JDBC: JAVA Database Connectivity
ODBC (Open Database Connectivity)
MYSQL Von Rahan Bölzer.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Vom XML Schema zur relationalen Datenbank Seminararbeit zum Multimedia-Seminar im SS 2002 Erstellt von: Thomas Dickel.
Wir bauen uns eine Webapplikation!
SQL Server 2005 CLR-Integration
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
1 Softwareentwicklung mit.NET Teil 5 Datenzugriff mit ADO.NET Dr. Ralph Zeller.
Datenbanksysteme für hörer anderer Fachrichtungen
Einführung in Datenbankmodellierung und SQL
Relationales Datenmodell und DDL
XML und Datenbanken © 2006 Markus Röder
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Torque robert.resch-wolfgang.schneider. uebersicht Was ist Torque Komponenten von Torque Generator Erzeugte Klassen Methoden Torque in Turbine Demobeispiel.
SQLite und XML in PHP 5.
Datenbankanbindung mit
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
XML-Verarbeitung mit dem.NET-Framework. Inhalt 1.XML-Verarbeitung mittels XmlReader- und XmlWriter-basierter Klassen 2.XML-Verarbeitung mittels XmlDocument.
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Datenbank System (DBS) - Warum?
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
Microsoft Student Partner
Datenbanken Produkte Dienstleistungen Referenzen.
Datenbanken Produkte Dienstleistungen Referenzen.
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
By Thorsten Zisler 1 SQL Datenbank Anbindung an den Supervisor.
Modul 223 © 2011 coloSign Modul 223 Multi-User-Applikation objektorientiert realisieren mit VB.NET Gino Colombo Gewerblich-Industrielle Berufsschule.
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
D-SQL SQLization – endlich Client/Server!
Create Table, Rechte und Rollen
(Structured Query Language)
 Präsentation transkript:

1 Softwareentwicklung mit.NET Teil 4 ADO.NET Dr. Ralph Zeller

2 Was ist ADO.NET?  ADO.NET (ActiveX Data Objects.NET) sind Klassen die Datenzugriffsdienste im.NET Framework bereitstellen. Microsoft.NET Framework Common Language Runtime Base Classes Web ServicesUser Interface Data and XML ADO.NETXML...

3 Motivation  Warum eine neue Schnittstelle für den Datenzugriff? Web Applikationen benötigen andere Architektur Lose Kopplung zwischen Applikation und Daten XML entwickelt sich zum universellen Datenformat  Problem mit bestehenden APIs ADO, OLE DB und ODBC: wurden für enge Kopplung und dauerhafte Verbindung konzipiert Remote Data Services, RDS: für nichtverbundene (disconnectet) Verbindungen. Kein Zustands- management zwischen request/response  Relationales vs. hierarchisches Datenmodell

4 ADO.NET Objekt Modell  Explizite Unterscheidung zwischen connected und disconnected Objekt Modell  Data Provider für connected Zugriff  DataSet bietet Funktionalität für disconnected Datenobjekte

5 Data Provider  Klassen, die den Zugriff auf Datenquellen managen Connection: Herstellung einer Verbindung zur Datenquelle Command: Zum Ausführen der Befehle DataReader: Liefert die Ergebnisse einer Abfrage DataAdapter: Verbindet das DataSet mit der Datenquelle

6 Data Provider  SQL Server.NET Data Provider: SQL Server 2000, SQL Server 7, MSDE Verwendet eigenes Kommunikationsprotokoll (TDS) Zugriff via System.Data.SQL Namespace  OleDb.NET Data Provider: SQLOLEDB – OLE DB provider für SQL Server MSDAORA – OLE DB provider für Oracle Microsoft.Jet.OLEDB.4.0 für Microsoft Jet Zugriff via System.Data.OleDb Namespace  ODBC.NET Data Provider: url=/msdn-files/027/001/668/msdncompositedoc.xml url=/msdn-files/027/001/668/msdncompositedoc.xml

7 Connection Objekt  Repräsentiert eine Verbindung zu einer Datenquelle  Die Verbindung zur Datenquelle ändern (create, open, close)  Transaktionen handhaben (begin, commit, abort) String conStr="Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=Provider.mdb"; OleDbConnection conn = new OleDbConnection(conStr); conn.Open(); // Queries mit OleDbCommand ausführen conn.Close();

8 Command Objekt OleDbCommand cmd = new OleDbCommand(); // Command mit Connection und Query String verbinden cmd.ActiveConnection = conn; cmd.CommandText = "SELECT * FROM Kunden"; OleDbCommand cmd = new OleDbCommand(); // Command mit Connection und Query String verbinden cmd.ActiveConnection = conn; cmd.CommandText = "SELECT * FROM Kunden";  Repräsentiert eine Abfrage (Query) einer Datenquelle  Interessante Properties: ActiveConnection: Verbindung zur Datenquelle CommandText: Enthält Query String CommandType: Wie ist Command Text zu interpretieren (Text, stored procedure, table name) CommandTimeout: Sekunden bis zum Timeout RecordsAffected: Anzahl der betroffenen Datensätze

9 ExecuteNonQuery  Wird verwendet, wenn keine Daten zurückgegeben werden  Insert, Update, Delete, Stored Proc, Data Defimition Language (DDL) Create Table, Create Index, … string conStr = "CREATE TABLE Abomodell " + "(AMNr LONG NOT NULL, Name CHAR(20) NOT NULL, " + "Grundgebuehr CURRENCY, Zeitgebuehr CURRENCY, " + "FreiStd LONG)"; // OleDBCommand Objekt anlegen OleDbCommand cmd = new OleDbCommand(conStr, conn); // Bei Kommandoausführung werden keine Daten zurückgegeben Int32 RowsAffected = cmd.ExecuteNonQuery(); string conStr = "CREATE TABLE Abomodell " + "(AMNr LONG NOT NULL, Name CHAR(20) NOT NULL, " + "Grundgebuehr CURRENCY, Zeitgebuehr CURRENCY, " + "FreiStd LONG)"; // OleDBCommand Objekt anlegen OleDbCommand cmd = new OleDbCommand(conStr, conn); // Bei Kommandoausführung werden keine Daten zurückgegeben Int32 RowsAffected = cmd.ExecuteNonQuery();

10 ExecuteScalar  Wird verwendet, um einen einzelnen Wert zu holen // OleDBCommand Objekt anlegen OleDbCommand cmd = new OleDbCommand( "SELECT Name FROM Abomodell " + "WHERE AboID conn); // Übergabeparameter wird erzeugt und initialisiert aboID); // Name wird zurückgegeben string aboName = (string)cmd.ExecuteScalar(); // OleDBCommand Objekt anlegen OleDbCommand cmd = new OleDbCommand( "SELECT Name FROM Abomodell " + "WHERE AboID conn); // Übergabeparameter wird erzeugt und initialisiert aboID); // Name wird zurückgegeben string aboName = (string)cmd.ExecuteScalar();

11 DataReader Objekt  Der DataReader bietet uns die Möglichkeit … Einen Ergebnis-Datenstrom von einer Datenquelle zu erhalten  Der Datenstrom kann nur in einer Richtung ausgelesen werden (forward-only, read-only) Unterstützt jedoch weder Scrolling noch Updates  Datenzugriffsmethoden: Mit Spaltenname und Index: myRow.GetString(0) Über Feldnamen: myRow[“Feldname”] Read: Bewegt den Reader zum nächsten Datensatz

12 DataReader Beispiel 1: Internet Provider

13 DataSet Objekt  Lokaler Cache für Daten Ähnlich einer relationalen Datenbank, die im Arbeitsspeicher liegt Sind disconnected von der Datenquelle (Connect, execute query, disconnect)  Universeller Datencontainer Nicht nur zur Verwendung mit Datenbanken  Daten werden in XML geholt und zurückgeschrieben

14 DataSet Tables DataTable Relations DataRelation DataRow(s) DataColumn Constraint(s) DataTable  DataSets enthalten Tabellen, Spalten, Relationen, Bedingungen, Zeilen

15 DataAdapter  weiß, wie eine Tabelle aus der Datenbank geladen wird und schreibt Änderungen zurück enthält zwei Methoden: Fill(DataSet) Update(DataSet) Mapping zwischen Tabellen und Spalten Benutzer kann die voreingestellten Kommandos überschreiben (insert/update/delete) z. B. um Stored Procedures anzugeben Erlaubt es, ein DataSet aus mehreren Datenquellen zu füllen

16 DataSet Beispiel 2: AboModell anzeigen

17 DataSet Beispiel 3: AboModell updaten

18 DataTable  Kann auf eine physische Tabelle in der Datenquelle gemapped sein.  Kann durch DataRelations mit anderen DataTables verbunden sein  Interessante Properties: Columns Rows ParentRelation Constraints PrimaryKey

19 DataSet und DataTable DataSet ds = new DataSet(); // Neues DataTable Objekt erzeugen DataTable dt = new DataTable( "Abomodell" ); // Spalten erzeugen und einfügen DataColumn dc = new DataColumn( "AboID", Int32 ); dt.Columns.Add( dc ); dt.Columns.Add( "Name", String ); dt.Columns.Add( "Grundgebuehr", Currency ); dt.Columns.Add( "Zeitgebuehr", Currency ); dt.Columns.Add( "FreiStd", Int32 ); // DataTable Objekt in DataSet einfügen ds.Tables.Add( dt ); DataSet ds = new DataSet(); // Neues DataTable Objekt erzeugen DataTable dt = new DataTable( "Abomodell" ); // Spalten erzeugen und einfügen DataColumn dc = new DataColumn( "AboID", Int32 ); dt.Columns.Add( dc ); dt.Columns.Add( "Name", String ); dt.Columns.Add( "Grundgebuehr", Currency ); dt.Columns.Add( "Zeitgebuehr", Currency ); dt.Columns.Add( "FreiStd", Int32 ); // DataTable Objekt in DataSet einfügen ds.Tables.Add( dt );  DataTable Objekt erzeugen und einfügen

20 DataRelation  Wird für logische Relationen verwendet Erzeugt Relation zwischen zwei (2) DataTable Objekten Benötigt ein DataColumn Objekt von jedem DataTable Objekt Der DataType beider DataColumns muss gleich sein Es kann keine Int32 DataColumn mit einem String DataColumn verbunden werden Die Relation bekommt einen Namen (von Dir!)  Macht relationale Navigation möglich DataRelation dr = new DataRelation("myRelation",...)

21 DataSet und DataRelation DataColumn parentCol, childCol; parentCol = DataSet.Tables["Kunden"].Columns["AboID"]; childCol = DataSet.Tables["Abomodell"].Columns["AboID"]; // Erzeuge die DataRelation mit Namen "Kde_Abo" DataRelation dr; dr = New DataRelation("Kde_Abo", parentCol, childCol); // DataRelation zu DataSet hinzufügen ds.Relations.Add( dr ); DataColumn parentCol, childCol; parentCol = DataSet.Tables["Kunden"].Columns["AboID"]; childCol = DataSet.Tables["Abomodell"].Columns["AboID"]; // Erzeuge die DataRelation mit Namen "Kde_Abo" DataRelation dr; dr = New DataRelation("Kde_Abo", parentCol, childCol); // DataRelation zu DataSet hinzufügen ds.Relations.Add( dr );  Wie wird eine DataRelation erzeugt: Suche die zu verbindenden DataColumn Objekte Erzeuge die DataRelation mit den Columns Füge die Relation in das DataSet ein

22 DataRelation Navigation // Kurzversion zur Erzeugung einer DataRelation ds.Relations.Add("Kde_Abo", ds.Tables["Kunden"].Columns["AboID"], ds.Tables["Abomodell"].Columns["AboID"]); // Navigiere durch die verknüpften Tabellen foreach (DataRow custRow in ds.Tables["Kunden"].Rows){ Console.WriteLine(custRow["KundeID"]); foreach (DataRow orderRow in custRow.GetChildRows(Kde_Abo)){ Console.WriteLine(orderRow["AboID"]); } // Kurzversion zur Erzeugung einer DataRelation ds.Relations.Add("Kde_Abo", ds.Tables["Kunden"].Columns["AboID"], ds.Tables["Abomodell"].Columns["AboID"]); // Navigiere durch die verknüpften Tabellen foreach (DataRow custRow in ds.Tables["Kunden"].Rows){ Console.WriteLine(custRow["KundeID"]); foreach (DataRow orderRow in custRow.GetChildRows(Kde_Abo)){ Console.WriteLine(orderRow["AboID"]); }

23 DataSet und XML  DataSet bietet Methoden mit denen man XML lesen und schreiben kann ReadXml: Liest XML Daten in ein DataSet, Schemainformationen nur wenn vorhanden ReadXmlSchema: Liest XML Schema in ein DataSet Zum Schreiben: WriteXml, WriteXmlSchema  Schema kann als XSD geladen/gespeichert werden  Schema kann automatisch aus DataSet erzeugt werden

24 DataSet und XML Beispiel 4: XML Dateien schreiben/lesen

25 ADO.NET und ASP.NET  Datenbank Kommandos Transaktionen (Updates, Inserts, etc.) DataReader für den Zugriff auf Datenströme WebControls füllen, HTML Tabellen aufbauen  DataSet Anwendungsdaten (Einkaufswagen) Ergebnisse cachen (häufige Abfrageergebnisse) Daten in einem WebRequest spiegeln  XML Transformationen (XSL/T) Validierung (XSD, XDR, DTD) B2B Austausch (BizTalk) Erreichbarkeit einer großen Client Palette

26 Web Forms Databinding public void Page_Load(Object sender, EventArgs e) { OleDbConnection conn = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=Provider.mdb"); conn.Open(); OleDbCommand cmd = new OleDbCommand( "SELECT * FROM Abomodell", conn); OleDbDataReader results = cmd.ExecuteReader(); // Rückgabe des DataReaders an Control binden ActivityList.DataSource = results; ActivityList.DataBind(); conn.Close(); } public void Page_Load(Object sender, EventArgs e) { OleDbConnection conn = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=Provider.mdb"); conn.Open(); OleDbCommand cmd = new OleDbCommand( "SELECT * FROM Abomodell", conn); OleDbDataReader results = cmd.ExecuteReader(); // Rückgabe des DataReaders an Control binden ActivityList.DataSource = results; ActivityList.DataBind(); conn.Close(); }

27 WebForms Databinding Beispiel 5: QueryClient.aspx

28 Fragen? Uff...