0% found this document useful (0 votes)
236 views55 pages

Data Access With ADO

The SqlClient data provider allows connecting to SQL Server from .NET applications. It provides classes like SqlConnection for establishing a connection, SqlCommand for executing commands, and SqlDataReader for processing result sets. When using the connected model, a connection is opened, commands are executed through it, and the result set is processed before closing the connection.

Uploaded by

Shamim Alamgir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
236 views55 pages

Data Access With ADO

The SqlClient data provider allows connecting to SQL Server from .NET applications. It provides classes like SqlConnection for establishing a connection, SqlCommand for executing commands, and SqlDataReader for processing result sets. When using the connected model, a connection is opened, commands are executed through it, and the result set is processed before closing the connection.

Uploaded by

Shamim Alamgir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 55

Accessing SQL Server and OLE DB from .

NET

Data Access with ADO.NET


Table of Contents

1.Data Access Models – Connected,


Disconnected, ORM
2.ADO.NET Architecture and Data Providers
3.Accessing SQL Server (Connected Model)
 Using SqlConnection , SqlCommand and
SqlDataReader
 Parameterized Queries
4.Accessing Other Databases
Data Access Models
Connected Model

ADO.NET
constantly open
DB
DB
connection
ADO.NET client Database

ADO.NET
temporary (offline)
DB
DB
connection

ADO.NET client
Disconnected Database
Model
Connected Model

Connected data access model


 Applicable to an environment where the database is
constantly available
 Too much effort to issue SQL commands

ADO.NET
constantly open
DB
DB
connection
ADO.NET client Database
Disconnected Model

Disconnected data access model


 A subset of the central database is copied locally at
the client and he works with the copy
 Database synchronization is done offline

ADO.NET
temporary (offline)
DB
DB
connection

ADO.NET client Database


ORM Model

ORM data access model


 Maps database tables to classes and objects
 Objects can be automatically persisted in the
database
 Can operate in both connected and disconnected
modes

OO ORM
Programming Framework
Language
ORM Model:
Benefits and Problems
ORM model benefits
 Increased productivity – writing less code
 Use objects with associations instead of tables and
SQL commands
 Integrated object query mechanism
ORM model drawbacks:
 Less flexibility – SQL is automatically generated
 Performance issues (sometimes)
ADO.NET Architecture
ADO.NET Architecture With
Different Model
What is ADO.NET?
ADO.NET is a standard .NET class library for accessing databases,
processing data and XML
 ActiveX Data Object.
 An API for working with data in .NET

 Supports connected, disconnected and ORM data access models

 Excellent integration with LINQ, XML and WCF

 Allows executing SQL in RDBMS systems

 DB connections, data readers, DB commands


 Supports the ORM approach

 LINQ-to-SQL and ADO.NET Entity Framework


Namespaces in ADO.NET
System.Data
 ADO.NET core classes
System.Data.Common
 Common classes for all ADO.NET technologies
System.Data.Linq
 LINQ to SQL framework classes
System.Data.Entity
 Entity Framework classes
System.Xml
 XML processing classes
Components of ADO.NET
Connected Model Disconn. Model LINQ-to-SQL Entity Framework

DataReader DataSet DataContext ObjectContext


DbCommand DataAdapter Table<T> EntityObject

ADO.NET
Programming Model

SQL Server .NET OleDb .NET Oracle .NET ODBC .NET


Data Provider Data Provider Data Provider Data Provider

OLE DB sources
SQL Server 2000
(MS Access, MS Oracle ODBC Data
SQL Server 2005
Excel, Active Database Source
SQL Server 2008
Directory, etc.)
Data Providers in ADO.NET

Data Providers are collections of classes that


provide access to various databases
 For different RDBMS systems different Data
Providers are available
▪ Each provider uses vendor-specific protocols to talk to
the database server
 Data providers define several common objects:
▪ Connection – to connect to the database
▪ Command – to execute an SQL command
▪ DataReader – to retrieve data
▪ Entity Framework support (optionally)
Data Providers in ADO.NET (2)

Several standard ADO.NET Data Providers come


as part of .NET Framework
 SqlClient – accessing SQL Server
 OleDB – accessing standard OLE DB data sources
 Odbc – accessing standard ODBC data sources
 Oracle – accessing Oracle database
Third party Data Providers are available for:
 MySQL, PostgreSQL, Interbase, DB2, SQLite
 Other RDBMS systems and data sources
Third Party Data Providers

ADO.NET Driver for MySQL (Connector/NET)


 http://www.mysql.com/products/connector/
 Supports Entity Framework (from version 6.0)
Oracle Data Provider for .NET (ODP.NET)
 http://www.oracle.com/technetwork/topics/dotnet
 Does not support Entity Framework
.NET Data Provider for PostgreSQL
 http://npgsql.projects.postgresql.org/
 Supports Entity Framework
Standard Data Provider Classes

System.Data.SqlClient and
System.Data.SqlTypes
 Data Provider classes for accessing SQL Server
System.Data.OleDb
 Classes for accessing OLE DB data sources
System.Data.Odbc
 Classes for accessing ODBC data sources
System.Data.Oracle
 Classes for accessing Oracle databases
ADO.NET: Connected Model

Retrieving data in SqlDataReader

connected model SqlParameter

1.Open a connection SqlParameter SqlCommand


(SqlConnection) SqlParameter
2.Execute command
SqlConnection
(SqlCommand)
3.Process the result set
of the query by using a
reader (SqlDataReader)
4.Close the reader
5.Close the connection Database
ADO.NET: Disconnected Model

Disconnected model – DataSet


data is cached in a
DataSet SqlDataAdapter
1.Open a connection
(SqlConnection)
2.Fill a DataSet (using SqlConnection
SqlDataAdapter)
3.Close the connection
4.Modify the DataSet
5.Open a connection
6.Update changes into the
DB Database
ORM ADO.NET: LINQ to SQL
Table
LINQ to SQL is ORM
Table Table
framework for SQL
Server
DataContext
1.Create object models
mapping the database
2.Open a data context SqlConnection
3.Retrieve data with
LINQ / modify the tables
in the data context
4.Persist the data context
changes into the DB
5.Connection is auto- Database
ADO.NET: Entity Framework
Entity
Entity Framework is Entity Entity

generic ORM ObjectContext


framework
1.Create entity data model EntityClient
mapping the database Data Provider
2.Open an object context
3.Retrieve data with SqlConnection
LINQ / modify the tables
in the object context
4.Persist the object
context changes into the
DB Database
SQL Client Data Provider

SQ L
SqlClient Data Provider

SqlConnection
 Establish database connection to SQL Server
SqlCommand
 Executes SQL commands on the SQL Server
through an established connection
 Could accept parameters (SQLParameter)
SqlDataReader
 Retrieves data (record set) from SQL Server as a
result of SQL query execution
ADO.NET Classes for the
Connected Model
SqlDataReader XmlReader

SqlCommand

SqlParameter
SqlParameter
SqlConnection SqlParameter

Database
The SqlConnection Class

SqlConnection holds a connection to SQL


Server database
 Requires a valid connection string
Connection string example:
Data Source=(local)\SQLEXPRESS;Initial
Connecting to SQL Server:Security=SSPI;
Catalog=Northwind;Integrated

SqlConnection con = new SqlConnection(


"Server=.\SQLEXPRESS;Database=Northwind;
Integrated Security=true");
con.Open();
Connection String

Database connection string


 Defines the parameters needed to establish the
connection to the database
Main parameters for SQL Server connections:
 Provider – name of the DB driver
 Data Source / Server – server name / IP address +
database instance name
 Database / Initial Catalog – database name
 User ID / Password – credentials
Connection String (2)

Main parameters for SQL Server connections:


 AttachDbFilename=some_db.mdf
▪ Attaches a local database file at startup
▪ Supported by SQL Express only
 Server=server_name\database_instance
▪ "." or "(local)" or "SOME_SERVER"
▪ Database instance is "MSSQL", "SQLEXPRESS" or other SQL
Server instance name
 Integrated Security – true / false
Working with SqlConnection

Explicitly opening and closing a connection


 Open() and Close() methods
 Works through the connection pool
Implicitly opening and closing the connection
 Done automatically by DataAdapters,
DataContexts and ObjectContexts
Connections are IDisposable objects
 Can be managed with the using construct
SqlConnection – Example

Creating and opening connection to SQL Server


(database DUIITAcademy)
SqlConnection dbCon = new SqlConnection(
"Server=.\\SQLEXPRESS; " +
"Database=DUIITAcademy; " +
"Integrated Security=true");
dbCon.Open();
using(dbCon)
{
// Use the connection to execute SQL commands here …
}
SqlClient and ADO.NET
Connected Model
Retrieving data in SqlDataReader

connected model SqlParameter


1.Open a connection SqlParameter SqlCommand
(SqlConnection) SqlParameter
2.Execute command
SqlConnection
(SqlCommand)
3.Process the result set
of the query by using a
reader (SqlDataReader)
4.Close the reader
5.Close the connection Database
The SqlCommand Class

Executes an SQL statement or a stored procedure


More important properties
 Connection – gets / sets the SqlConnection of
the command
 CommandType – the type of the command
▪ CommandType.StoredProcedure
▪ CommandType.TableDirect
▪ CommandType.Text
 CommandText – the body of the SQL query or the
name of the stored procedure
 Parameters
The SqlCommand Class (2)

More important methods


 ExecuteScalar()
▪ Returns a single value (the value in the first column of the
first row of the result set)
▪ The returned value is System.Object but can be casted
to the actual returned data type
 ExecuteReader()
▪ Returns a SqlDataReader
▪ It is a cursor over the returned records (result set)
▪ CommandBehavior – assigns some options
The SqlCommand Class (3)

More important methods


 ExecuteNonQuery()
▪ Used for non-query SQL commands, e.g. INSERT
▪ Returns the number of affected rows (int)
 ExecuteXmlReader()
▪ Returns the record set as XML
▪ Returns an XmlReader
▪ Supported in SqlClient Data Provider only
SqlCommand – Example
SqlConnection dbCon = new SqlConnection(
"Server=.\\SQLEXPRESS; " +
"Database=TelerikAcademy; " +
"Integrated Security=true");
dbCon.Open();
using(dbCon)
{
SqlCommand command = new SqlCommand(
"SELECT COUNT(*) FROM Employees", dbCon);
decimal employeesCount = command.ExecuteScalar();
Console.WriteLine("Employees count: {0} ",
employeesCount);
}
The SqlDataReader Class

SqlDataReader retrieves a sequence of records


(cursor) returned as result of an SQL command
 Data is available for reading only (can't be changed)
 Forward-only row processing (no move back)
Important properties and methods:
 Read() – moves the cursor forward and returns
false if there is no next record
 Item (indexer) – retrieves the value in the current
record by given column name or index
 Close() – closes the cursor and releases resources
SqlDataReader – Example
SqlConnection dbCon = new SqlConnection(…);
dbCon.Open();
using(dbCon)
{
SqlCommand command = new SqlCommand(
"SELECT * FROM Employees", dbCon);
SqlDataReader reader = command.ExecuteReader();
using (reader)
{
while (reader.Read())
{
string firstName = (string)reader["FirstName"];
string lastName = (string)reader["LastName"];
decimal salary = (decimal)reader["Salary"];
Console.WriteLine("{0} {1} - {2}",
firstName, lastName, salary);
}
}
}
The SqlParameter Class

What are SqlParameters?


 SQL queries and stored procedures can have input
and output parameters
 Accessed through the Parameters property of the
SqlCommand class
Important properties of SqlParameter:
 ParameterName – name of the parameter
 DbType – SQL type (NVarChar, Timestamp, …)
 Size – size of the type (if applicable)
 Direction – input / output
Parameterized Commands –
Example
private void InsertProject(string name, string description,
DateTime startDate, DateTime? endDate)
{
SqlCommand cmd = new SqlCommand("INSERT INTO Projects " +
"(Name, Description, StartDate, EndDate) VALUES " +
"(@name, @desc, @start, @end)", dbCon);
cmd.Parameters.Add(new SqlParameter("@name", name));
cmd.Parameters.Add(new SqlParameter("@desc", description));
cmd.Parameters.Add(new SqlParameter("@start", startDate));
SqlParameter sqlParameterEndDate =
new SqlParameter("@end", endDate);
if (endDate == null)
sqlParameterEndDate.Value = DBNull.Value;
cmd.Parameters.Add(sqlParameterEndDate);
cmd.ExecuteNonQuery();
}
Primary Key Retrieval
Retrieval of an automatically generated
primary key is specific to each database server
In SQL Server IDENTITY column is used
 Obtained by executing the following query:

Example of obtaining the automatically


SELECT @@Identity

generated primary key in ADO.NET:

SqlCommand selectIdentityCommand =
new SqlCommand("SELECT @@Identity", dbCon);
int insertedRecordId = (int)
(decimal) selectIdentityCommand.ExecuteScalar();
SqlCommand: Using Stored
Procedures
SqlCommand requires following configuration to
execute a stored procedure.
 Set the stored procedure name
 Set the command type as
CommantType.StoredProcedure
 Set the SqlParameter to send parameter to the SP.
SqlCommand: Using Stored
Procedures Example
SqlCommand cmd = new SqlCommand(
"CustOrderHist", conn);
cmd.CommandType =
CommandType.StoredProcedure;
cmd.Parameters.Add( new
SqlParameter("@CustomerID", custId));
cmd.ExecuteReader();
ADO.Net DataSet and Adapters

A DataSet is an in-memory
data store that can hold
numerous tables.
DataSets only hold data and
do not interact with a data
source.
It is the SqlDataAdapter that
manages connections with the
data source and gives us DataSet
disconnected behavior.
ADO.Net DataSet and
Adapters(2)
The SqlDataAdapter opens a connection only
when required and closes it as soon as it has
performed its task.
The SqlDataAdapter performs the following
tasks when filling a DataSet with data:
 Open connection
 Retrieve data into DataSet
 Close connection
ADO.Net DataSet and
Adapters(3)
Creating a DataSet Object
 DataSet dsCustomers = new DataSet();
Creating A SqlDataAdapter
SqlDataAdapter daCustomers
= new SqlDataAdapter(
     "select CustomerID, CompanyName from
Customers", conn);
Filling the DataSet
 daCustomers.Fill(dsCustomers, "Customers");
Using the DataSet
dgCustomers.DataSource = dsCustomers; 
ADO.Net DataSet additional
functionalities
Adding Multiple Tables
Adding a Relationship Between Tables 
Merging DataSet Contents 
Copying DataSet Contents
ADO.Net DataView

A DataView enables us to create different


views of the data stored in a DataTable, a
capability that is often used in data-binding
applications. 
A DataView provides a dynamic view of data
in the underlying DataTable: the content,
ordering, and membership reflect changes as
they occur.
We can also use a DataViewManager to
manage view settings for all the tables in
Creating a DataView

There are two ways to create a DataView.


We can use the DataView constructor
DataView custDV = new
DataView(custDS.Tables["Customers"], "Country =
'USA'", "ContactName",
DataViewRowState.CurrentRows);
We can also create a reference to
the DefaultView property of the DataTable.
DataView custDV =
custDS.Tables["Customers"].DefaultView;
Sorting and Filtering Data Using
a DataView 
We can use the Sort property to specify single
or multiple column sort orders and include ASC
(ascending) and DESC (descending)
parameters.
We  can use the ApplyDefaultSort property to
automatically create a sort order, in ascending
order, based on the primary key column or
columns of the table.
We can use the RowFilter property to specify
subsets of rows based on their column values.
Connecting to Non-Microsoft
Databases
Connecting to Non-Microsoft
Databases
ADO.NET supports accessing various
databases via their Data Providers:
 OLE DB – supported internally in ADO.NET
▪ Access any OLE DB-compliant data source
▪ E.g. MS Access, MS Excel, MS Project, MS Exchange,
Windows Active Directory, text files
 Oracle – supported internally in ADO.NET
 MySQL – third party data provider
 PostgreSQL – third party data provider
ADO.NET Data Interfaces

ADO.NET Data Providers implement the


following interfaces:
 IDbConnection
 IDbCommand, IDataParameter
 IDataReader
 IDbDataAdapter
ADO.NET Base Classes
ADO.NET provides the following base classes:
 DbConnection
 DbCommand / DbParameter
 DbDataReader
 DbTransaction
 DbParameterCollection
 DbDataAdapter
 DbCommandBuilder
 DbConnectionStringBuilder
 DbDataPermission
OLE DB Data Provider

OleDbConnection – establishes a connection


to an OLE DB source
OleDbConnection dbConn = of
newdata
OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\MyDB.mdb;Persist Security Info=False");

OleDbCommand – executes an SQL commands


through an OLE DB connection to a DB
OleDbParameter – parameter for a
command
OleDbDataReader – to retrieve data from a
Connecting To OLE DB –
Example
Suppose we have MS Access database
C:\Library.mdb
We have the table Users:
We use the "Microsoft Jet 4.0 Provider" to
connect in ADO.NET through OLE DB
We create a connection string component:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
C:\Library.mdb;Persist Security Info=False
References

http://www.csharp-
station.com/Tutorial/AdoDotNet
http://msdn.microsoft.com/en-
us/library/e80y5yhx(v=vs.80)
http://www.codeproject.com
Download the application and presentation
 https://docs.google.com/open?
id=0B5b3ZcIvnbMrdHlOSDRXWG9mbDA
Data Access with ADO.NET

Questions?

You might also like