Datenzugriff mit ADO.NET

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Objektrelationales Mapping mit JPA
der Universität Oldenburg
Was gibt´s neues im Bereich Sicherheit
JDataSet & Persistenz Layer
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
MSDN TechTalk – März 2002 ADO.NET 1
SQL Server 2005 Übersicht für Entwickler Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
Microsoft Academic Program Datenzugriff mit Framework 2.0 Student Technology Conference 2005.
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Datenbankzugriff im WWW (Kommerzielle Systeme)
NATURAL Web-Integration 1 / 27/28-Feb-98 TST NATURAL Web-Integration Arbeitskreis NATURAL Süd Theo Straeten SAG Systemhaus GmbH Technologieberater Stuttgart.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink.
Introducing the .NET Framework
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Einführung MySQL mit PHP
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Visual FoxPro 8.0 NameTitelUnternehmen. Agenda Jahre Visual FoxPro 10 Jahre Visual FoxPro Der Weg zu VFP 8.0 Der Weg zu VFP 8.0 Ziele von und Überblick.
Arbeiten mit SQL in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 Roadshow SQL.
Uwe Habermann Venelina Jordanova dFPUG – Silverlight Wizard.
Uwe Habermann Venelina Jordanova VFP Code in Silverlight Anwendungen ausführen.
Einführung und Überblick
Microsoft Office Information Bridge Framework Jens Häupel.NET Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek (Level 100) Presenter: Daniel Walzenbach Technologieberater.
JDBC: JAVA Database Connectivity
Architektur und Funktionalitäten der Oracle XML DB - ein Überblick mit ausgewählten praktischen Beispielen - im Rahmen des 17. Workshop Grundlagen von.
Best Practices in der Datenbank-programmierung
EJB-Applikationsserver
SQL Server 2005 CLR-Integration
Video Streaming mit Silverlight
DireXions – Connectivity Inside & Out File I/O Updates, ODBC 64-bit, & SQL Command Utility Presenter: Devon Austen.
Version 2008 Team Foundation Version Control (TFVC) … ist eine vollständige Neuentwicklung … wurde für große Teams, die auch weltweit verteilt arbeiten,
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH Christian Weyer Solutions Architect thinktecture.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 13 Kapitel 4 Folie 2 REST Web Services (1)
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.
Sesame Florian Mayrhuber
Uwe Habermann Venelina Jordanova Professioneller Einstieg in eine neue Welt!
1 Softwareentwicklung mit.NET Teil 5 Datenzugriff mit ADO.NET Dr. Ralph Zeller.
Intensivmedizin-Applikation mit WPF, WCF und LINQ
XML und Datenbanken © 2006 Markus Röder
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
SQLite und XML in PHP 5.
Datenbankanbindung mit
Eine persönliche Fallstudie …
Mit IT IS enbex Hand in Hand Zeitgemäße Unternehmen sind auf schnellen und sicheren Datenaustausch angewiesen IT IS AG.
Sprachneuerungen des .NET Frameworks 3.5
XML-Verarbeitung mit dem.NET-Framework. Inhalt 1.XML-Verarbeitung mittels XmlReader- und XmlWriter-basierter Klassen 2.XML-Verarbeitung mittels XmlDocument.
Datenbanken im Web 1.
Weg mit Fehlern, die kein Entwickler versteht …
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH
Christian Binder Senior Platform Strategy Manager Microsoft Deutschland GmbH.
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH.
Arbeiten in einem agilen Team mit VS & TFS 11
1 Softwareentwicklung mit.NET Teil 4 ADO.NET Dr. Ralph Zeller.
Microsoft Silverlight Autor: Christian Pirker. Inhalt Einführung Silverlight Einführung XAML Silverlight 1.0 und 1.1 Silverlight 2.0 Silverlight 3.0 Ausblick.
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
Azure Active Directory und Azure Active Directory Domain Services
D-SQL SQLization – endlich Client/Server!
 Präsentation transkript:

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

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

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

Das DataSet im Detail DataSet DataTableCollection DataTable DataView DataRowCollection DataColumnCollection DataRelationCollection

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

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

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.

© 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.

Anhang

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

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

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

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 http://msdn.microsoft.com

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(); }

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()

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(); }

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 ) ); } }

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

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()

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

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

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

Das DataSet im Detail DataSet DataTableCollection DataTable DataView DataRowCollection DataColumnCollection DataRelationCollection

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

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

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

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

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

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

ADO.NET 2.0 Dirk Primbs Technologieberater Microsoft Deutschland GmbH dirkp@microsoft.com

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

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.

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.

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.

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.