ado.net overview ado.net classes. ado.net overview looking back odbc (open database connectivity) ...

42
ADO.NET Overview ADO.NET Classes

Upload: hazel-millard

Post on 15-Dec-2015

227 views

Category:

Documents


2 download

TRANSCRIPT

ADO.NET Overview ADO.NET Classes

ADO.NET OverviewLooking Back

ODBC (Open Database Connectivity) Interoperability to a wide range of database

management systems (DBMS) Widely accepted API Uses SQL as data access language

DAO (Data Access Objects) Programming interface for JET/ISAM databases Uses automation (ActiveX, OLE automation)

RDO (Remote Data Objects) Tighter coupling to ODBC Geared more to client/server databases (vs.

DAO)

ADO.NET OverviewLooking Back OLE DB

Broad access to data, relational and other Built on COM Not restricted to SQL for retrieving data Can use ODBC drivers Low-level (C++) interface

ADO (ActiveX Data Objects) Simple component-based, object-oriented

interface Provides a programming model to OLE DB

accessible outside of C++

ADO.NET OverviewLooking Back

ADO

ODBC Provider Simple Provider Native Provider

OLE DB Provider

ODBC

ODBC Driver

TextFile

Database Database

OLE DB Provider

Mainframe

OLE DB

Your Application

ADO.NET OverviewLooking Back ADO was designed as a connected,

tightly coupled model Appropriate for client/server architectures

Primarily relational (not hierarchical like XML)

Object design is not well factored Too many ways to do the same thing Objects try to do too much

Not originally designed for a distributed, n-tier environment

ADO.NET OverviewWhat Is ADO.NET? ADO .NET is a collection of classes,

interfaces, structures, and enumerated types that manage data access from relational data stores within the .NET Framework These collections are organized into

namespaces: System.Data, System.Data.OleDb,

System.Data.SqlClient, etc. ADO .NET is an evolution from ADO.

Does not share the same object model, but shares many of the same paradigms and functionality!

ADO.NET OverviewADO.NET Goals Well-factored design Highly scaleable through a robust

disconnected model Rich XML support

(hierarchical as well as relational) Data access over HTTP Maintain familiar ADO programming

model Keep ADO available via .NET COM

interoperability

ADO.NET OverviewManaged Providers Merges ADO and OLEDB into one layer Each provider contains a set of classes

that implement common interfaces Initial managed provider

implementations: ADO Managed Provider: provides access to

any OLE DB data source

SQL Server Managed Provider: provides optimal performance when using SQL Server

Exchange Managed Provider: retrieve and update data in Microsoft Exchange

ADO.NET OverviewManaged Providers

SQL Managed Provider

SQL ServerDatabase

ADO.NET Managed Provider

ADO Managed Provider

OLE DB Provider

Database

Your Application

ADO.NET OverviewData Access Styles Connected: Forward-only, read-only

Application issues query then reads back results and processes them

“Firehose” cursor DataReader object

Disconnected Application issues query then retrieves

and stores results for processing Minimizes time connected to database DataSet object

ADO.NET OverviewData Binding Key component of Web Forms

framework Flexible and easy to use

Bind a control’s property to information in any type of data store

Provides control over how data moves back and forth

Simple controls for displaying a single value Complex controls for displaying a data

structure<asp:Label runat=server Text='<%# CustList(0).FirstName %>'/>

Agenda

Database Theory and History Relational Database Concepts and

Terminology ADO.NET Overview ADO.NET Classes

ADO.NET ClassesIDbConnection Interface Creates a unique session with a data

source Implemented by SqlDbConnection and OleDbConnection

Functionality Open, close connections Begin transactions

IDbTransaction provide Commit and Rollback methods

Used in conjunction with IDbCommand and IDataAdapter objects

Additional properties, methods and collections depend on the provider

ADO.NET Classes IDbCommand Interface

Represents a statement to be sent to a data source Usually, but not necessarily SQL

Implemented by OleDbCommand and SqlCommand Functionality

Define statement to execute Execute statement Pass and retrieve parameters Create a prepared (compiled) version of command

ExecuteReader returns rows, ExecuteNonQuery doesn’t, ExecuteScalar returns single value

Additional properties, methods and collections depend on the provider

ADO.NET Classes IDataReader Interface Forward-only, read-only (“fire hose”)

access to a stream of data Implemented by SqlDataReader and OleDbDataReader

Created via ExecuteReader method of IDbCommand

Operations on associated IDbConnection object disallowed until reader is closed

ADO.NET Classes System.Data.OleDb Namespace Managed provider for use with OLEDB

providers SQLOLEDB (SQL Server) – use

System.Data.SQL MSDAORA (Oracle) JOLT (Jet) OLEDB for ODBC providers

OleDbConnection, OleDbCommand and OleDbDataReader classes

Classes for error handling Classes for connection pooling

ADO.NET Classes DataReader Example

string sConnString = “Provider=SQLOLEDB.1;” + “User ID=sa;Initial Catalog=Northwind;” + “Data Source=MYSERVER”;

OleDbConnection conn = new OleDbConnection(sConnString);conn.Open();string sQueryString = “SELECT CompanyName FROM Customers”;OleDbCommand myCommand = new OleDbCommand(sQueryString, conn);OleDbDataReader myReader = myCommand.ExecuteReader();while (myReader.Read()) { Console.WriteLine(myReader.GetString(0));}myReader.Close();conn.Close();

ADO.NET ClassesSystem.Data Namespace Contains the core classes of the

ADO.NET architecture Disconnected DataSet is central Supports all types of applications

Internet based ASP.NET XML

Windows forms based

ADO.NET ClassesSystem.Data Namespace Contains classes used by or derived

from managed providers

IDbConnection, IDbCommand, IDbDataReader

ADO.NET Classes DataSet A collection of tables Has no knowledge of the source of the data Keeps track of all relationships among tables Rich programming model (has objects for

tables, columns, relationships, and so on) Remembers original and current state of

data Can dynamically modify data and metadata Native serialization format is XML Located in System.Data

ADO.NET Classes DataSet

DataSet

DataTable

DataRelation

DataRow

DataColumn

ADO.NET Classes System.Data.SqlClient Namespace Managed provider native to SQL Server Built on TDS (Tabular Data Stream) for

high performance in SQL Server SqlConnection, SqlCommand and SqlDataReader classes

Classes for Error handling Connection pooling (implicitly enabled by

default ) System.Data.SqlTypes provides

classes for native SQL Server data types

ADO.NET Classes IDataAdapter Interface Populates or sends updates to a DataSet Implemented by OleDbDataAdapter and SqlDataAdapter

Not connection based Represents an asynchronous approach A superset of a command object Contains four default command objects

for Select, Insert, Update, and Delete

ADO.NET Classes DataSet Example

string sConnString = “Persist Security Info=False;” + “User ID=sa;Initial Catalog=Northwind;” + “Data Source=MYSERVER”;

SqlConnection conn = new SqlConnection(sConnString);conn.Open();string sQueryString = “SELECT CompanyName FROM Customers”;SqlDataAdapter myDSAdapter = new SqlDataAdapter();DataSet myDataSet = new DataSet();myDSAdapter.SelectCommand = new SqlCommand(sQueryString, conn);myDSAdapter.Fill(myDataSet);conn.Close();

ADO.NET Classes DataTable In-memory object representing one

table Columns Rows

Schema defined by Columns collection Data integrity provided through Constraint objects

Public events Modifying/deleting rows Modifying columns

ADO.NET Classes DataColumn

Fundamental building block of a DataTable schema (contained in Columns collection)

Defines what type of data may be entered (via DataType property)

Other important properties include AllowNull, Unique, and ReadOnly

Can contain Constraints (a collection on DataTable)

Can contain Relations (collection on DataSet)

ADO.NET Classes DataRow Represents data in a DataTable

(contained in Rows collection) Conforms to schema defined by

DataColumns Properties for determining row state

(e.g., new, changed, deleted, etc.) All additions/modifications

“committed” with AcceptChanges method of DataTable

ADO.NET Classes DataRelation Relates two DataTables via DataColumns

DataType value of both DataColumns must be identical

Updates can be cascaded to child DataTables

Modifications that invalidate the relation are disallowed

ADO.NET Classes Creating a DataSet in Code

Create DataSet Define tables

DataSet dataset = new DataSet();dataset.DataSetName = “BookAuthors”;

DataTable authors = new DataTable(“Author”);DataTable books = new DataTable(“Book”);

ADO.NET Classes Creating a DataSet in Code

Define columns Define keys

DataColumn id = authors.Columns.Add("ID", typeof(Int32));id.AutoIncrement = true;authors.PrimaryKey = new DataColumn[] {id};

DataColumn name = new authors.Columns.Add("Name",typeof(String));

DataColumn isbn = books.Columns.Add("ISBN", typeof(String));books.PrimaryKey = new DataColumn[] {isbn};

DataColumn title = books.Columns.Add("Title", typeof(String));DataColumn authid = books.Columns.Add(“AuthID”,typeof(Int32));DataColumn[] foreignkey = new DataColumn[] {authid};

ADO.NET Classes Creating a DataSet in Code

Add the tables to the DataSet

dataset.Tables.Add (authors);dataset.Tables.Add (books);

ADO.NET Classes Creating a DataSet in Code

Add data and save the DataSet

DataRow shkspr = authors.NewRow();shkspr["Name"] = "William Shakespeare";authors.Rows.Add(shkspr);

DataRelation bookauth = new DataRelation("BookAuthors",

authors.PrimaryKey, foreignkey);dataset.Relations.Add (bookauth);

DataRow row = books.NewRow();row["AuthID"] = shkspr["ID"];row["ISBN"] = "1000-XYZ";row["Title"] = "MacBeth";books.Rows.Add(row);

dataset.AcceptChanges();

ADO.NET ClassesTyped DataSets

Typed DataSet Derived from base DataSet class Uses XML schema to generate new class Tables, columns, etc. compiled into new class

Untyped DataSet No built-in schema Tables, columns, etc. exposed only as collections

ds.Customers.FirstName

ds.Tables[“Customers”].Rows[0][“FirstName”]

ADO.NET Classes Errors and Exceptions Error class

Contains information on an error or warning returned by data source

Created and managed by Errors class Errors class

Contains all errors generated by an adapter Created by Exception class

Exception class Created whenever an unhandled error occurs Always contains at least one Error instance

ADO.NET Classes Errors and Exceptions Example

try { DataTable myTable = new DataTable(); myTable.Columns.Add(“myCol”); myTable.Columns.Add(“myCol”); //whoops!}catch (DataException myException) { Console.WriteLine ("Message: " + myException.Message + "\n" + "Source: " + myException.Source + "\n" + “Stack Trace: " + myException.StackTrace + "\n");}

Conclusion

Database Theory and History Relational Database Concepts and

Terminology ADO.NET Overview ADO.NET Classes

Resources

Introducing ADO+ http://msdn.microsoft.com/msdnmag/issues/1100/adoplus/adoplus.asp

ADO.NET http://msdn.microsoft.com/library/default.asp?URL=/library/dotnet/

cpguide/cpconaccessingdata.htm

ADO+ Guides the Evolution of the Data Species http://msdn.microsoft.com/library/techart/adoplus.htm

ADO.NET for the ADO Programmer http://msdn.microsoft.com/library/techart/adonetdev.htm

ADO Rocks and Rolls in .NET Applications http://msdn.microsoft.com/library/welcome/dsmsdn/data02222001.htm

Meditating on OLE DB and .NET http://msdn.microsoft.com/library/welcome/dsmsdn/data03222001.htm

Resources

Reading Data Reader Secrets http://msdn.microsoft.com/library/welcome/dsmsdn/data04122001.htm

Database-like Data Containers http://msdn.microsoft.com/library/default.asp?URL=/library/welcome/

dsmsdn/data04122001.htm

ADO http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/

dasdk/ados4piv.htm

Universal Data Access http://www.microsoft.com/data/

SQL Server http://www.microsoft.com/sql/default.asp

AppendixADO vs. ADO.NET ADO is a slower automation layer

over OLE DB for use in Visual Basic, etc.

ADO.NET provides direct, fast access to data from any language

ADO.NET essentially has merged OLE DB and ADO into a single layer

AppendixADO vs. ADO.NET

Feature ADO ADO.NETMemory-resident Data Representation

Uses RecordSet, which can contain one table

Uses DataSet, which can contain one or more tables represented by DataTables

Relationship Between Multiple Tables

Require the JOIN query Supports the DataRelation object

Data Visitation Scans RecordSet rows sequentially

Uses a navigation paradigm for non-sequential access

Disconnected Access Provided by RecordSet but typically supports connected access

Communicates with standardized calls to the DataAdapter

AppendixADO vs. ADO.NET

Feature ADO ADO.NETProgrammability Uses Connection object

to transmit commandsUses strongly typed programming characteristics of XML

Sharing Disconnected Data Between Tiers or Components

Uses COM marshalling to transmit disconnected Recordset

Transmits a DataSet with an XML file

Transmitting Data Through Firewalls

Problematic because firewalls are typically configured to prevent system-level requests

Supported, DataSet object use XML, which can pass through firewalls

Scalability Database locks and active database connections for long durations

Disconnected access to database data without retaining database locks