">

Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Datenzugriff mit ADO.NET

Ähnliche Präsentationen


Präsentation zum Thema: "Datenzugriff mit ADO.NET"—  Präsentation transkript:

1 Datenzugriff mit ADO.NET
MGB 2003 Datenzugriff mit ADO.NET Dirk Primbs Technologieberater Microsoft Deutschland GmbH © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

2 <Agenda topic="ADO.NET">
<Architektur /> <Datenzugriff /> <XML /> <DataBinding /> <Ausblick /> </Agenda>

3 Ein Blick auf die Architektur
Controls, Designers, Code-gen, etc XSL/T, X-Path, etc Sync DataSet XmlData- Document DataAdapter XmlReader XmlText- Reader XmlNode- Managed Provider DataReader Command Connection

4 Das DataSet im Detail DataSet DataTableCollection DataTable DataView
DataRowCollection DataColumnCollection DataRelationCollection

5 ADO.NET 2.0 Designziele Verbesserung der Performance (~30%)
Weniger Code No breaking changes!

6 ADO.NET 2.0 SQL Server Yukon Features Common Provider Model DataSet
Notification Services XML Data Types Bulk Copy Multiple Active Resultsets (MARS) Common Provider Model DataSet Automatische Ermittlung von Beziehungen Binary Serialization

7 Provider-Factories Enumerieren vorhandener ADO.NET-Provider
MGB 2003 Provider-Factories Enumerieren vorhandener ADO.NET-Provider DbProviderFactories.GetFactoryClasses() Dynamisches Erzeugen aller wichtigen Objekte DbProviderFactory provFactory = DbProviderFactories.GetFactory("System.Data.SqlClient"); DbDataAdapter da = provFactory.CreateDataAdapter(); da.Connection = provFactory.CreateConnection(); da.Connection.ConnectionString = "..."; da.SelectCommand = provFactory.CreateCommand(); da.SelectCommand.CommandText = "select * from customers"; da.Fill(ds); © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

8 © 2004 Microsoft Corporation. All rights reserved.
MGB 2003 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

9 Anhang

10 Einführung in ADO.NET Kein einfacher Nachfolger von ADO
Neues Paradigma und Objektmodell Architektur Schwerpunkt: Daten losgelöst von der Datenbank zu bearbeiten Anders anzuwenden, macht aber auch vieles einfacher z.B. Implementierung eigener Provider

11 Ein Blick auf die Architektur
Controls, Designers, Code-gen, etc XSL/T, X-Path, etc Sync DataSet XmlData- Document DataAdapter XmlReader XmlText- Reader XmlNode- Managed Provider DataReader Command Connection

12 Managed Provider Um auf Daten zuzugreifen benötigt man einen Managed Provider Der Managed Provider implementiert die notwendigen Schnittstellen IDbConnection IDbCommand IDataReader Diese Schnittstellen sind im Namespace System.Data beschrieben

13 Managed Provider II Zwei Provider sind bei der Visual Studio .NET Version dabei SQL Server Managed Provider System.Data.SqlClient OLEDB Managed Provider System.Data.OleDb Zwei weitere sind noch verfügbar Oracle Managed Provider ODBC Managed Provider zu finden unter

14 Das Connection Objekt Mit dem Connection Objekt wird die Verbindung zur Datenquelle hergestellt using System.Data; using System.Data.SqlClient; ... public void ConnectToDatabase() { SqlConnection conn = new SqlConnection(); conn.ConnectionString = „{providerspecific string}“; conn.Open(); }

15 Das Command Objekt Das Command Objekt führt die entsprechenden Befehle gegen die Datenquelle aus In der Regel SQL Statements Bei manchen Providern auch andere Statements Command Objekte können referenzen auf andere Objekte zurückgeben z.B. ExecuteReader()

16 Das Command Objekt II Benötigt eine Connection
Optional auch eigene Transaktion using System.Data; using System.Data.SqlClient; ... public void ExecuteSomething() { SqlCommand cmd = new SqlCommand( „DELETE FROM a“ ); cmd.ExecuteNoQuery(); }

17 Das DataReader Objekt Über das Reader Objekt werden die Daten aus einem Resultset ausgelesen Nur Vorwärtslesen möglich! ... public void ReadData() { SqlDataReader reader = cmd.ExecuteReader(); while( reader.Read() ) { Console.WriteLine( reader.GetString( 1 ) ); } }

18 DataAdapter und DataSet
Daten können aus der Datenquelle in ein Objekt gelesen werden DataSet Daten können aus diesem Objekt wieder in die Datenquelle geschrieben werden durch den DataAdapter

19 Das DataAdapter Objekt
Die Brücke zwischen Datenquelle und DataSet Öffnet die Verbindung automatisch falls noch nicht offen Schliesst die Verbindung automatisch falls diese selbst geöffnet wurde Die wichtigsten Methoden hierbei sind Fill() Update()

20 Das DataAdapter Objekt II
Als Grundlage dienen 4 Statements SelectCommand InsertCommand DeleteCommand UpdateCommand Das CommandBuilder Objekt kann dabei fehlende Befehle selbst erzeugen

21 Das DataSet Objekt Das zentrale Element für Datenbearbeitung
Ein Objekt das Daten im Speicher der Anwendung hält Hat keinerlei Information woher die Daten kamen und wohin diese gehen Das weiß der DataAdapter

22 Das DataSet Objekt Direkte Nutzung der Klasse
DataSet ds = new DataSet(); Man kann auch eine typisierte Version des Objektes nutzen Eine Ableitung von DataSet die das Layout der Tabelle als Klasse wiedergibt Ein Code Generator erzeugt diese Klasse

23 Das DataSet im Detail DataSet DataTableCollection DataTable DataView
DataRowCollection DataColumnCollection DataRelationCollection

24 DataSet im Detail Enthält also Tabellen, Relationen, Views und Constraints Eine kleine „In-Memory“ Datenbank Daten werden XML basiert behandelt! DataSets basieren auf XML Schemas DataSets können mit XmlDataDocument synchronisiert werden

25 Datenbindung in .NET DataBinding
herstellen einer Verbindung zwischen Datencontainer und Datenelement Datenbindung mit jeglichem Objekt möglich DataSet Array DataReader eigene Objekte Bestimmte Schnittstellen müssen Implementiert werden

26 Arten von Datenbindung
Zwei unterschiedliche Arten von Bindung Einfache Datenbindung komplexe Datenbindung Die Relation zwischen einem Anzeigeelement und einem Datenelement z.B. TextBox.Text = Customers.Lastname Oder zwischen einem Steuerelement und einem Datencontainer z.B. DataGrid.DataSource = DataSet

27 Herstellen der Bindung
Die Datenbindung kann während des Anwendungsdesigns gemacht werden zur Laufzeit gemacht werden Bindungen können jeder Zeit wieder gelöst und neu getätigt werden Das BindingManager Objekt verwaltet diese Datenbindungen

28 ADO.NET und XML XML ist die Grundlage von ADO.NET
Daten können in beide Richtungen ausgetauscht werden DataSet -> XmlDataDocument XmlDataDocument -> DataSet Neue Möglichkeiten mit relationalen Daten zu arbeiten Hierarchische Sichtweise XPath Queries XSLT Umwandlungen

29 Zusammenfassung ADO.NET ist ein neu zu erlernendes Objektmodell
Aber es ist einfacher zu benutzen Und einfacher zu erweitern Bietet volle Zugriffsmöglichkeit auf relationale und XML basierte Datenbestände

30 ADO.NET 2.0 Dirk Primbs Technologieberater Microsoft Deutschland GmbH

31 Agenda ADO.NET 2.0 im Überblick Einfacher Schneller
MGB 2003 Agenda ADO.NET 2.0 im Überblick ADO.NET most wanted  Einfacher Schneller Unterstützung für SQL Server "Yukon" Demos, Demos, Demos, ...  © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

32 Ziele bei der Entwicklung von ADO.NET 2.0
MGB 2003 Ziele bei der Entwicklung von ADO.NET 2.0 Evolution, nicht Revolution Umsetzen von Kundenwünschen Viele Features wurden durch Kundenwunsch getrieben Mehr Möglichkeiten für Spezialisten Performance, Performance, Performance Support für SQL Server "Yukon" als First Class Feature Keine fundamentalen Änderungen des Objektmodells! Was unter ADO.NET 1.1 funktioniert, geht auch unter Whidbey! © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

33 Top 3 Kundenwünsche Paging großer Datenmengen
MGB 2003 Top 3 Kundenwünsche Paging großer Datenmengen automatische Übernahme von Beziehungen in typisierten DataSets Serverseitiger Cursor © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

34 Paging von Abfrageergebnissen
MGB 2003 Paging von Abfrageergebnissen Häufiger Wunsch besonders von Web-Entwicklern HTTP ist zustandslos zu übertragende Datenmenge ist performance-kritisch SqlCommand.ExecutePageReader() Optional von Datenprovidern implementierbar Nutzt bei SQL Server intern Stored Procedures sp_cursoropen und sp_cursorfetch © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

35 Beziehungen und typisierte DataSets
MGB 2003 Beziehungen und typisierte DataSets Bisher mußten Beziehungen zwischen Datentabellen manuell am DataSet modelliert werden ds.Relations.Add() In Whidbey können diese Beziehungen automatisiert ermittelt und auf das DataSet angewandt werden © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

36 Serverseitiger Cursor
MGB 2003 Serverseitiger Cursor Nur einsetzen, wenn unbedingt notwendig! Kann Resourcen-/Skalierungsprobleme verursachen SqlCommand.ExecuteResultSet(); Als Scrollable und als Updatable möglich SqlConnection sqlConn = new SqlConnection(strConn); SqlCommand sqlCmd = sqlConn.CreateCommand(); sqlCmd.CommandText = strSQL; sqlResultSet sqlResults = sqlCmd.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable); © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

37 Provider-Factories Enumerieren vorhandener ADO.NET-Provider
MGB 2003 Provider-Factories Enumerieren vorhandener ADO.NET-Provider DbProviderFactories.GetFactoryClasses() Dynamisches Erzeugen aller wichtigen Objekte DbProviderFactory provFactory = DbProviderFactories.GetFactory("System.Data.SqlClient"); DbDataAdapter da = provFactory.CreateDataAdapter(); da.Connection = provFactory.CreateConnection(); da.Connection.ConnectionString = "..."; da.SelectCommand = provFactory.CreateCommand(); da.SelectCommand.CommandText = "select * from customers"; da.Fill(ds); © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

38 Enumerieren… ... durch alle verfügbaren Provider
MGB 2003 Enumerieren… ... durch alle verfügbaren Provider ... durch Serverinstanzen im Netzwerk DataTable providers = DbProviderFactories.GetFactoryClasses(); foreach (DataRow dr in providers.Rows) { Console.WriteLine("Name: {0}, Invariantname: {1}", dr["Name"], dr["Invariantname"] } DataTable sources = SqlDataSourceEnumerator.Instance.GetDataSources(); foreach( DataRow dr in sources.Rows ) { Console.WriteLine("{0}", dr["Name"]); } © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

39 Asynchroner Datenzugriff
MGB 2003 Asynchroner Datenzugriff Ideal überall dort wo das Blockieren des Ausführungsthreads verhindert werden soll Client-Applikationen: UI-Thread Server-Applikationen BeginOpen, EndOpen, BeginExecute, … Integrierbar in 3rd Party Providers ADO.NET 2.0 unterstützt asynchronen Zugriff bei SQL Server 7, 2000 und “Yukon” © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

40 DataSet Performance Remoting Neues, schnelleres Indexing
MGB 2003 DataSet Performance Remoting Ein häufiger Hinweis unserer Kunden: “DataSets sind langsam, wenn man sie mit Remoting benutzt” Deshalb… Datasets unterstützen jetzt "binary serialization" Deutlich schnelleres serialize/deserialize Deutlich weniger Speicherverbrauch Neues, schnelleres Indexing Speziell bei Insert deutliche Performancesteigerungen © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

41 Bulk Copy SqlBulkCopyOperation
MGB 2003 Bulk Copy beschleunigt das Kopieren größerer Datenmengen SqlBulkCopyOperation kann DataReader oder DataTable als Datenquelle verwenden deutlich bessere Performance als entsprechende Insert-Kommandos © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

42 MGB 2003 Batch Updates ADO.NET 1.0/1.1: DataAdapter.Update() erzeugt pro Row einen Roundtrip zum Server In Whidbey kann blockweise geupdatet werden: adapter.UpdateBatchSize = your_batch_size Verfügbar für SqlClient and OracleClient Batches können innerhalb einer Transaktion durchgeführt werden Dazu Transaktionsobjekt der Commands am Dataadapter setzen © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

43 Multiple Active Result-Sets
MGB 2003 Multiple Active Result-Sets System.InvalidOperationException: There is already an open DataReader associated with this Connection which must be closed first. Mehr als ein aktiver Request pro Connection-Objekt Mehrer aktive DataReader Ausführung von Batches zwischen Read() und Read() Ein aktiver DataReader pro Command-Objekt basiert auf SQL Server "Yukon" MARS © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

44 Benutzerdefinierte Datentypen
MGB 2003 Benutzerdefinierte Datentypen CLR-Typen direkt in die Datenbank schreiben Nahtlose Integration in ADO.NET Übergabe der Objekte durch … … datareader.GetValue … Parameter.Value=… Wird in SQL Server "Yukon" unterstützt © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

45 SQL Server XML Datentyp
Nahtlose Integration “Einfach nur ein Typ” DataReader SqlDataReader.GetSqlXmlReader Parameter Einfach einen XmlReader oder einen string übergeben DataSet Ansteuerbar als XPathDocument Hinweis: In der Alpha-Version von Whidbey enthält das DataSet statt dessen einen XmlReader

46 Common Provider Model ADO.NET v1.0/1.1 basiert auf Interfaces
MGB 2003 Common Provider Model ADO.NET v1.0/1.1 basiert auf Interfaces Reicht nicht immer aus um providerunabhängigen Code zu schreiben Aufwändige Implementation für eigene Provider notwendig Deshalb: ein gemeinsames Basis-Objektmodell Abstrakte Basisklassen statt Interfaces Vereinfacht die Versionierung 3rd Party Provider können ADO.NET Basisfunktionalität mitbenutzen. z.B. ADO.NET Connection Pooler Ideale Grundlage für Provider-unabhängige Applikationen Basisklassen sind eine Erweiterung des bisherigen Modells => Keine Kompatibilitätsprobleme © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

47 Gemeinsame Basisklassen
MGB 2003 Gemeinsame Basisklassen System.Data.ProviderBase Abstrakte Basisklassen für alle wichtigen Providerobjekte Können in eigenen Providern als Ableitungsbasis verwendet und um eigene Funktionalität ergänzt werden © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

48 Was sonst noch… SqlClient OleDb Integration mit System.Transactions
MGB 2003 Was sonst noch… Integration mit System.Transactions Tracing Connection pool reset API DataSet DataTable losgelöster von DataSet DataSet.Load DataTableReader SqlClient Notifications SQL Server ‘Yukon’ Typen varchar/varbinary(max) Change password on login Promotable transactions More to come… OleDb Managed pooling option © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

49 MGB 2003 Zusammenfassung Whidbey: Änderungen basieren größtenteils auf Kundenfeedback Features, Performance, Usability Integration SQL Server “Yukon” wird nativ unterstützt Evolution statt Revolution Keine Kompatibilitätsprobleme © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.


Herunterladen ppt "Datenzugriff mit ADO.NET"

Ähnliche Präsentationen


Google-Anzeigen