Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 41

Visual Programming

INTRODUCTION TO ADO.NET

Muhammad Ahmad Jan


1
CONTENTS

• Overview of the Ado.Net


• Architecture of the Ado.Net
• Components of the Ado.Net

2
OVERVIEW OF THE ADO.NET

• ADO.NET is a set of classes provides a rich set of components for


creating distributed, data-sharing applications.

• ADO.NET is an integral part of the Microsoft .NET Framework.


• All ADO.NET classes are located at the System.Data namespace
• Basically speaking, ADO.NET provides a set of classes to support
you to develop database applications and enable you to connect to a
data source to retrieve, manipulate and update data with your
database.

3
ARCHITECTURE OF THE
ADO.NET
 The ADO.NET architecture can be divided into two logical pieces:
command execution and caching.

• Command execution requires features like connectivity, execution,


and reading of results. These features are enabled with ADO.NET
Data Providers.
• Caching of results is handled by the DataSet.

4
ARCHITECTURE OF THE
ADO.NET

5
COMPONENTS OF THE ADO.NET
• The classes provided by ADO.NET are core to develop a
professional data-driven application and they can be
divided into the following three major components:
• Data Provider
• DataSet
• DataTable

• These three components are located at the different


namespaces. The DataSet and the DataTable classes are
located at the System.Data namespace. The classes of
the Data Provider are located at the different
namespaces based on the types of the Data Providers.
6
OVERVIEW OF THE ADO.NET
COMPONENTS

11/07/20 7
DATA PROVIDER
• Data Provider is nothing but a set of libraries that is used to
communicate with different data sources like Microsoft SQL server,
MS Access, Oracle etc.
• The Data Provider can also be called a data driver and it can be used
as a major component for your data-driven applications. The
functionalities of the Data Provider, as its name means, are to:

• Connect your data source with your applications


• Execute different methods to perform the associated data query and
data accessing operations between your data source and your
applications
• Disconnect the data source when the data operations are done

8
TYPES OF DATA PROVIDER
 The Data Provider is physically composed of a binary library file
and this library is in the DLL file format. Sometimes this DLL file
depends on other DLL files, so in fact a Data Provider can be made
up of several DLL files. Based on the different kinds of databases,
Data Provider can have several versions and each version is matched
to each kind of database. The popular versions of the Data Provider
are:
• Open DataBase Connectivity (Odbc) Data Provider (ODBC.NET)
• Object Linking and Embeding DataBase (OleDb) Data Provider
(OLEDB.NET)
• SQL Server (Sql) Data Provider (SQL Server.NET)
• Oracle (Oracle) Data Provider (Oracle.NET)

9
TYPES OF DATA PROVIDER
• The different data providers are located at the different namespaces, and these
namespaces hold the various data classes that you must import into your code in
order to use those classes in your project.
• Following Table lists the most popular namespaces used by the different data
providers and used by the DataSet and the DataTable.

Table 3-1. Namespaces for different Data Providers, DataSet and DataTable
Namespaces Descriptions
System.Data Holds the DataSet and DataTable classes
Holds the class collection used to access an OLEDB data source
System.Data.OleDb
Holds the classes used to access an SQL Server 7.0 data source
System.Data.SqlClient
or later
Holds the class collection used to access an ODBC data source
System.Data.Odbc 10
Holds the classes used to access an Oracle data source
System.Data.OracleClient
 
THE ODBC DATA PROVIDER
 The ODBC.NET supports the following Data Providers:

• SQL Server
• Microsoft ODBC for Oracle
• Microsoft Access Driver (*.mdb)

11
THE OLEDB DATA PROVIDER

 The OLE DB.NET data access technique supports the following


Data Providers:

• Microsoft Access
• SQL Server (7.0 or later)
• Oracle (9i or later)

12
THE SQL SERVER DATA PROVIDER

 This Data Provider provides access to a SQL Server version 7.0 or


later database using its own internal protocol. The functionality of
the data provider is designed to be similar to that of the .NET
Framework data providers for OLE DB, ODBC, and Oracle. All
classes related to this Data Provider are defined in a DLL file and is
located at the System.Data.SqlClient namespace. Although
Microsoft provides different Data Providers to access the data in
SQL Server database, such as the ODBC and OLE DB, for the sake
of optimal data operations, it is highly recommended to use this
Data Provider to access the data in an SQL Server data source.

13
 THE ORACLE DATA PROVIDER

 This Data Provider is an add-on component to the .NET Framework that


provides access to the Oracle database. All classes related to this Data
Provider are located in the System.Data.OracleClient namespace. This
provider relies upon Oracle Client Interfaces provided by the Oracle
Client Software. You need to install the Oracle Client software on your
computer to use this Data Provider.

Microsoft provides multiple ways to access the data stored in an Oracle


database, such as Microsoft ODBC for Oracle and OLE DB, you should
use this Data Provider to access the data in an Oracle data source since this
one provides the most efficient way to access the Oracle database.

14
DATA PROVIDER’S CLASSES
• Data Provider contains four classes: Connection, Command,
DataAdapter and DataReader. These four classes can be used to
perform the different functionalities to help you to:

• Set a connection between your project and the data source using the
Connection object
• Execute data queries to retrieve, manipulate and update data using the
Command object
• Move the data between your DataSet and your database using the
DataAdapter object
• Perform data queries from the database (read-only) using the
DataReader object
15
 THE CONNECTION CLASS

 Data Provider contains four sub-classes and the Connection


component is one of them. This class provides a connection between
your applications and the database you selected to connect to your
project. To use this class to setup a connection between your
application and the desired database, you need first to create an
instance or an object based on this class.

 The Connection object you want to use depends on the type of the
data source you selected. Data Provider provides four different
Connection classes and each one is matched to one different
database.

16
THE CONNECTION CLASS

 Following Table lists these popular Connection classes used for the
different data sources:

Table. The Connection classes and databases


Connection Class Associated Database
OdbcConnection ODBC Data Source
OleDbConnection OLE DB Database
SqlConnection SQL Server Database
OracleConnection Oracle Database

17
 
 THE CONNECTION CLASS
 The connection string is a property of the Connection class and it
provides all necessary information to connect to your data source.
Regularly this connection string contains a quite few parameters to define
a connection, but only five of them are popularly utilized for most data-
driven applications:

• Provider
• Data Source
• Database
• User ID
• Password
18
THE PROVIDER PARAMETER

• Specifies the driver that the connection class uses to communicate with the
database.
• The most common drivers are:
• Microsoft.Jet.OLEDB.4.0 for Access
• SQLOLEDB for SQL Server
• MSDAORA for Oracle

19
THE DATA SOURCE PARAMETER

• is used to specify the server name of the computer on which the database
is running.

• When connecting to an Access database, this specifies the path and


database name.

20
THE DATABASE PARAMETER

• Is self-explanatory and specifies the database name where your data resides

21
USER ID AND PASSWORD
PARAMETERS
• They are used to specify your database login credentials
• The User ID and Password defined in the database, not your Windows
login credentials.

22
 THE CONNECTION CLASS
 A typical data connection instance with a general connection string
can be expressed by the following codes:
 
Connection = New xxxConnection(“Provider = MyProvider;” & _
“Data Source = MyServer;” & _
“Database = MyDatabase;” & _
“User ID = MyUserID;” & _
“Password = MyPassWord;”)

where xxx should be replaced by the selected Data Provider in your


real application, such as OleDb, Sql or Oracle. You need to use the
real parameter values implemented in your applications to replace
those nominal values such as MyServer, MyDatabase, MyUserID
and MyPassWord in your application.
23
THE CONNECTION CLASS
 The Provider parameter indicates the database driver you selected. If you installed a
local SQL server and client such as the SQL Server 2005 Express on your computer,
the Provider should be localhost. If you are using a remote SQL Server instance, you
need to use that remote server’s network name. If you are using the default named
instance of SQLX on your computer, you need to use .\SQLEXPRESS as the value for
your Provider parameter. For the Oracle server database, you do not need to use this
parameter.

 The Data Source parameter indicates the name of the network computer on which
your SQL server or Oracle server is installed and running.
 The Database parameter indicates your database name.
 The User ID and Password parameters are used for the security issue for your
database. In most cases, the default Windows NT Security Authentication is utilized.

24
THE CONNECTION CLASS
Some typical Connection instances are listed below:
 
 OLE DB Data Provider for Microsoft Access Database 2003
 
Connection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\database\CSE_DEPT.mdb;" & _
"User ID=MyUserID;" & _
"Password=MyPassWord;")

 OLE DB Data Provider for SQL SERVER


 
Connection = New OleDbConnection("Provider=SQLOLEDB.1;" & _
"Data Source=MyComputerName\SQLEXPRESS;" & _
"Database =MyDatabseName;" & _
"User ID=MyUserID;" & _
"Password=MyPassWord;")
25
 
  THE CONNECTION CLASS

Some typical Connection instances are listed below:


 
 SQL Server Data Provider for SQL Server Database
 
Connection = New SqlConnection("Server=localhost;" + _
"Data Source=Susan\SQLEXPRESS;" + _
"Database=CSE_DEPT;" + _
"Integrated Security=SSPI")
 

 Oracle Data Provider for Oracle Database


Connection = New OracleConnection("Data Source=XE;" + _
"User ID=system;" + _
"Password=reback")
26
 THE OPEN() METHOD OF THE CONNECTION CLASS

 To create a real connection between your database and your applications,


the Open() method of the Connection class is called and it is used to open
a connection to a data source with the property settings specified by the
connection string.
An example of opening an OLEDB connection
connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=yourdatabasename.mdb;";
cnn = new OleDbConnection(connetionString);
cnn.Open();

27
 THE CLOSE() METHOD OF THE CONNECTION
CLASS
The Close() method is a partner of the Open() method and it is used to close a
connection between your database and your applications when you finished your
data operations to the data source. You should close any connection object you
connected to your data source after you finished the data access to that data
source, otherwise a possible error may be encountered when you try re-open that
connection in the next time as you run your project.

Unlike the Open() method, which is a key to your data access and operation to your
data source, the Close() method does not throw any exceptions when you try to
close a connection that has already been closed. So you do not need to use a
Try….Catch block to catch any error for this method.

28
THE DISPOSE() METHOD OF THE
CONNECTION CLASS
The Dispose() method of the Connection class is an overloaded method and
it is used to releases the resources used by the Connection object. You
need to call this method after the Close() method is executed to perform a
cleanup job to release all resources used by the Connection object during
your data access and operations to your data source.
After the Close() and Dispose() methods executed, you can release your
reference to the Connection instance by setting it to Nothing. A piece of
example code is shown in Figure 3-4.

' clean up the objects used


accConnection.Close()
accConnection.Dispose()
accConnection = Nothing 29

Figure 3-4. An example coding for the cleanup of resources


THE COMMAND CLASS
Command objects are used to execute commands against your database
such as a data query, an action query, and even a stored procedure. In fact,
all data accesses and data operations between your data source and your
applications are achieved by executing the Command object with a set of
parameters.

Command class can be divided into the different categories and these
categories are based on the different Data Providers. For the popular Data
Providers, such as OLE DB, ODBC, SQL Server and Oracle, each one
has its own Command class. Each Command class is identified by the
different prefix such as OleDbCommand, OdbcCommand,
SqlCommand and OracleCommand. Although these different
Command objects belong to the different Data Providers, they have the
similar properties and methods, and they are equivalent in functionalities.

30
 THE PROPERTIES OF THE COMMAND
CLASS

The Command class contains more than 10 properties, but only four
of them are used popularly in most applications:

• Connection property
• CommandType property
• CommandText property
• Parameters property

31
THE PROPERTIES OF THE COMMAND
CLASS

• Connection property holds a valid Connection object, and the Command object
can be executed to access the connected database based on this Connection object.

• CommandType property indicates what kind of command that is stored in the


CommandText property should be executed.

• CommandText property contains a complete SQL statement if the value of the


CommandType property is Text.

• Parameters property holds a collection of the Parameter objects. You must first
create and initialize a Parameter object before you can add that object to the
Parameters collection for a Command object.
32
 
THE CONSTRUCTOR OF THE COMMAND CLASS

The constructor of the Command class is an overloaded method


and it has multiple protocols. Four popular protocols are listed
in Figure 3-8 (an SQL Server Data Provider is used as an
example).
• SqlCommand( )
• SqlCommand(string)
• SqlCommand(string,SqlConnection)
•  SqlCommand(string,SqlConnection,SqlTransaction)

33
 
THE METHODS OF THE COMMAND CLASS

The actual execution of a Command object is to run one of methods of


the Command class to perform the associated data queries or data
actions. Four popular methods are widely utilized for most data-
driven applications and Table 3-6 lists these methods.
Table 3-6. Methods of the Command class
Method Name Functionality
ExecuteReader Executes commands that return rows, such
as a SQL SELECT statement. The returned
rows are located in an OdbcDataReader, an
OleDbDataReader, a SqlDataReader or an
OracleDataReader, depending on which
Data Provider you are using.
ExecuteScalar Retrieves a single value from the database.
ExecuteNonQuery Executes a non-query command such as
SQL INSERT, DELETE, UPDATE, and
SET statements.
ExecuteXmlReader (SqlCommand only) Similar to the ExecuteReader method, but
the returned rows must be expressed using34
XML. This method is only available for the
SQL Server Data Provider.
THE DATA ADAPTER CLASS
• DataAdapter is a part of the ADO.NET Data Provider
• acts as a Bridge between DataSet and datasource
• DataAdapter provides the communication between the Dataset and the
Datasource
• Dataadapter is a disconnected oriented architecture
• We can use the DataAdapter in combination with the DataSet Object.

Data Adapter

Command

Connection
• 35
Data Source
THE DATA READER CLASS
• DataReader is used to read the data from database
• it is a read and forward only connection oriented architecture during fetch the
data from database
• DataReader will fetch the data very fast when compared with dataset
• Generally we will use ExecuteReader object to bind data to datareader
• Example
• Conn.Open();
• SqlCommand cmd = new SqlCommand("Select UserName, First Name,LastName,
Location FROM Users", conn);  
• SqlDataReader sdr = cmd.ExecuteReader();
• gvUserInfo.DataSource = sdr;
• gvUserInfo.DataBind();
• conn.Close();
• 36
DATASET AND DATATABLE
• The DataSet class can be considered as a table container and it can contain
multiple data tables. These data tables are only a mapping to those real data
tables in your database. But these data tables can also be used separately
without connecting to the DataSet. In this case, each data table can be
considered as a DataTable object.

• The DataSet and DataTable classes have no direct relationship with the Data
Provider class; therefore they are often called Data Provider-independent
components.

• Four classes such as Connection, Command, DataAdapter and DataReader


that belong to Data Provider is often called Data Provider-dependent
components.

37
DATASET VS DATATABLE

1. A DataTable is an in-memory representation of a single database table


which has collection of rows and columns

2. Number of rows retrieved at a time: DataTable fetches only one


TableRow at a time

3. Provision of DataRelation Objects: As DataTable is a single


database table, so there is no DataRelation object in it.

4. Enforcing Data Integrity:In DataTable, there is no UniqueConstraint


and ForeignKeyConstraint objects available

• 38
DATASET VS DATATABLE

1.Meaning: A DataSet is an in-memory representation of a database-like


structure which has collection of DataTables.

2.Number of rows retrieved at a time: DataSet can fetch multiple


TableRows at a time

3.Provision of DataRelation Objects: In DataSet, DataTable objects can


be related to each other with DataRelation objects.

4.Enforcing Data Integrity:In DataSet, data integrity is enforced by


using the UniqueConstraint and ForeignKeyConstraint objects.

• 39
DATASET VS DATATABLE
• A DataSet holds one or more DataTables.

Example 1:
• DataTable dt = new DataTable();
• DataSet ds = new DataSet();
• ds.Tables.Add(dt);

Example 2:
• DataTable dt1 = new DataTable();
• DataTable dt2 = new DataTable();
• DataSet ds = new DataSet();
• ds.Tables.Add(dt1);
• ds.Tables.Add(dt2);
• 40
QUESTIONS ?

• 41

You might also like