1 / 21

Softwareentwicklung mit .NET Teil 5 Datenzugriff mit ADO.NET Dr. Ralph Zeller

Softwareentwicklung mit .NET Teil 5 Datenzugriff mit ADO.NET Dr. Ralph Zeller. Was ist ADO.NET? . ADO.NET (ActiveX Data Objects .NET) sind Klassen die Datenzugriffsdienste im .NET Framework bereitstellen. Microsoft .NET Framework. Web Services. User Interface. Data and XML. ADO.NET.

britannia
Télécharger la présentation

Softwareentwicklung mit .NET Teil 5 Datenzugriff mit ADO.NET Dr. Ralph Zeller

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Softwareentwicklung mit .NET Teil 5 Datenzugriff mit 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 Web Services User Interface Data and XML ADO.NET XML ... ... Base Classes Common Language Runtime

  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 • Managed Provider für connected Zugriff • DataSet bietet Funktionalität für disconnected Datenobjekte

  5. Managed 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 • DataSetCommand: Verbindet das DataSet mit der Datenquelle • Es gibt zwei Managed Provider • ADO:Jeder OLE Datenbank (OLE DB) Provider.Zugriff via System.Data.ADO Namespace • SQL Server:SQL Server 2000, SQL Server 7, MSDEZugriff via System.Data.SQL Namespace

  6. 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";ADOConnection aConn = new ADOConnection(conStr);aConn.Open();// Queries mit der ADODataSetCommand Klasse ausführenaConn.Close();

  7. Command Objekt • 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 ADOCommand cmd = new ADOCommand(); // Command mit Connection und Query String verbinden cmd.ActiveConnection = aConn; cmd.CommandText = "SELECT * FROM Kunden";

  8. 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 Typ und Spaltenindex: myRow.GetString(0) • Über Attributnamen: myRow[“Attribut”] • Read: Bewegt den Reader zum nächsten Datensatz

  9. DataReaderBeispiel 1:Internet Provider

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

  11. DataSet Tables DataTable DataRow(s) DataColumn Constraint(s) Relations DataRelation DataRelation DataSet • DataSets enthalten Tabellen, Spalten, Relationen, Bedingungen, Zeilen DataTable DataTable

  12. DataSetCommand • weiß, wie eine Tabelle aus der Datenbank geladen wird und schreibt Änderungen zurück • enthält zwei Methoden: • FillDataSet(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

  13. DataSetBeispiel 2:AboModell ausgeben

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

  15. DataSet und DataTable • DataTable Objekt erzeugen und einfügen 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 );

  16. 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”,...)

  17. DataSet und DataRelation • 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 DataColumn parentCol, childCol; parentCol= DataSet.Tables["Kunden"].Columns["AboID"]; childCol = DataSet.Tables["Abomodell"].Columns["AboID"]; // Erzeuge die DataRelation mit Namen "CustomerOrders"DataRelation dr; dr = New DataRelation("Kunden_Abomodell", parentCol, childCol); // DataRelation zu DataSet hinzufügends.Relations.Add( dr );

  18. DataSet und XML • DataSet bietet Methoden mit denen man XML lesen und schreiben kann • ReadXml: Liest XML Schema und Daten in ein DataSet • ReadXmlData: Liest XML Daten in ein DataSet • ReadXmlSchema: Liest XML Schema in ein DataSet • Zum Schreiben: WriteXml, WriteXmlData, WriteXmlSchema • Schema kann als XSD geladen/gespeichert werden • Schema kann von XML Daten erzeugt werden (?!)

  19. DataSet und XMLBeispiel 3:XML Dateien schreiben/lesen

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

  21. Uff... Fragen?

More Related