Está en la página 1de 37

An Introduction to

ADO.Net

Marmagna Desai
.NET Seminar, Fall-2003
Contents
What is ADO.Net?
What happened to ADO?
The ADO.Net object structure
Connecting
Commanding
Readers and DataSets
What is ADO.Net?

The data access classes for the


.Net framework
Designed for highly efficient data
access
Support for XML and disconnected
record sets
And the .Net framework?

A standard cross language


interface
Encapsulation of services, classes
and data types
Uses XML for data representation
Where does ADO sit?
VB C# C++ Jscript

Common Language Specification

Visual Studio .NET


ASP.Net Windows Forms

ADO.Net XML.Net

Base Class Library

Common Language Runtime (CLR)


Windows COM+ Services
What happened to ADO?

ADO still exists.


ADO is tightly coupled to client
server architectures
Needs COM marshalling to pass
data between tiers
Connections and locks are typically
persisted
ADO / ADO.Net Comparisons
Feature ADO ADO.Net
In memory Recordset object Dataset object
data storage Mimics single table Contains DataTables

Data Reads Sequential Sequential or non-


sequential

Data OLE/DB via the Managed provider


Sources Connection object calls the SQL APIs
ADO / ADO.Net Comparisons
Feature ADO ADO.Net
Disconnected Limited support, Strong support,
data suitable for R/O with updating

Passing COM marshalling DataSet support for


datasets XML passing

Scalability Limited Disconnected access


provides scalability
.NET Data Providers

SQL .NET

Data Provider
SQL SERVER

OLE DB .NET
Client Data Provider
OLE DB
Other DB
Provider

ODBC .NET ODBC


Data Provider Driver Other DB
Data Provider Functionality

Client .Net Data Provider

Connection Command
Rows
DataReader

DataSet
DataAdapter database
ADO.Net object model
Fill
DataAdapter DataSet
Update
UpdateCommand

DeleteCommand
SelectCommand

InsertCommand

Errors Collection

Command

Connection Parameters

Data Source
Namespaces

System.Data &
System.Data.Common
System.Data.SqlClient &
System.Data.OleDB
System.Data.SqlTypes
System.XML &
System.XML.Schema
Using Namespaces
VB.Net
Imports System.Data
Imports System.Data.SqlClient
Dim sqlAdp as SqlDataAdapter
C#
using System.Data;
using System.Data.SqlClient;
SqlDataAdapter sqlAdp= new
SqlDataAdapter();
SQL Namespace Objects
using System.Data.SqlClient;
SqlConnection
SqlCommand
SqlDataReader
SqlDataAdapter
SqlParameter
SqlParameterCollection
SqlError
SqlErrorCollection
SqlException
SqlTransaction
SqlDbType
Connecting to SQL
using System.Data.SqlClient;

string sConnectionString =
"Initial Catalog=Northwind;
Data Source=localhost;
Integrated Security=SSPI;";

SqlDataAdapter sqlAdp= new


SqlDataAdapter(sConnectionString);

sqlAdp.Close();
sqlAdp.Dispose();
Connection Pooling
ADO.Net pools connections.
When you close a connection it is released back into a
pool.
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Integrated Security=SSPI;Initial Catalog=northwind";
conn.Open(); // Pool A is created.
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Integrated Security=SSPI;Initial Catalog=pubs";
conn.Open();
// Pool B is created because the connection strings differ.
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Integrated Security=SSPI;Initial Catalog=northwind";
conn.Open(); // The connection string matches pool A.
Getting data

SqlCommand
ExecuteReader
ExecuteNonQuery
ExecuteScalar
ExecuteXMLReader
SqlDataAdapter
DataSet
Using the command object

SqlCommand
Multiple constructors
New()
New(cmdText)
New(cmdText, connection)
New(cmdText, connection,
transaction)
Using the command object
string sSelectQuery =
"SELECT * FROM Categories ORDER BY CategoryID";
string sConnectionString =
"Initial Catalog=Northwind;
Data Source=localhost;
Integrated Security=SSPI;";
SqlConnection objConnect = new SqlConnection(sConnectString);
SqlCommand objCommand = new SqlCommand(sSelectQuery,
objConnect);
/*
objCommand.CommandTimeout = 15;
objCommand.CommandType = CommandType.Text;
*/

objConnect.Open();

SqlDataReader drResults;
drResults = objCommand.ExecuteReader()

drResults.Close();
objConnect.Dispose();
Command Methods

.ExecuteReader() - Returns DataReader


.ExecuteNonQuery() - Returns # of
Rows Affected

.ExecuteXMLReader() - Returns
XMLReader Object to Read XML
documentation
.ExecuteScaler() - Returns a Single
Value e.g. SQL SUM function.
The DataReader object

DataReader objects are highly


optimised for fast, forward only
enumeration of data from a data
command
A DataReader is not disconnected
The DataReader object

Access to data is on a per record


basis.
Forward only
Read only
Does support multiple recordsets
Creating a data reader
SqlDataReader sqlReader;
sqlReader =
sqlCommand.ExecuteReader();
while (sqlReader.Read())
{
// process, sqlReader("field")
}
sqlReader.Dispose();
Other Methods

GetString(), GetInt() etc.


GetSqlString(), GetSqlInt32() etc.
GetValues()
IsDBNull()
GetSchemaTable()
DataSets
In-memory representation of data
contained in a database/XML
Operations are performed on the
DataSet, not the data source
Can be created programmatically,
using a DataAdapter or XML
schema and document (or any
mixture)
Creating DataSets

Setup SqlConnection
Setup a SqlDataAdapter
Create a DataSet
Call the .Fill() method on the DA
DataAdapters

Pipeline between DataSets and


data sources
Geared towards functionality
rather than speed
Disconnected by design
Supports select, insert, delete,
update commands and methods
DataAdapters

Must always specify a select


command
All other commands can be
generated or specified
Using the DataAdapter
SQLDataAdapter sqlDA =
new SqlDataAdapter();

sqlDA.SelectCommand =
new SqlCommand ("select * from
authors, sqlConnection);

DataSet sqlDS = new


DataSet("authorsTable");
sqlDA.Fill(sqlDS, "authorsTable");
DataAdapters

For speed and efficiency you


should set your own
InsertCommand, UpdateCommand
and DeleteCommand
Call GetChanges to seperates the
updates, adds and deletes since
the last sync. Then sync each type.
DataTables

A DataSet contains one or more


DataTables.
Fields are held within the
DataTable.
And in DataRows, DataColumns.
Sets, Tables and Rows

DataSet
DataTable
DataTable
DataRow
DataRow
Using DataTables

With a DataTable we can


Insert, modify and update
Search
Apply views
Compare
Clear
Clone and Copy
DataRelations

New to ADO.Net
Tables within a DataSet can now
have relationships, with integrity.
Supports cascading updates and
deletes.
DataViews

Like a SQL view


Single, or multiple tables
Normally used with GUI
applications via Data Binding.
References

ADO.Net Programmers Reference


Bilbija, Dickenson et al.
Wrox Press
http://oberon.idunno.org/sql/
My email :
desai8@uwindsor.ca
Thank You!!

-Marmagna Desai

También podría gustarte