Answer Definition: ADO Is A Rich Set of Classes, Interfaces, Structures and Enumerated Types That Manage Data Access From Various Types of Data Stores
Answer Definition: ADO Is A Rich Set of Classes, Interfaces, Structures and Enumerated Types That Manage Data Access From Various Types of Data Stores
NET
Answer
Definition: ADO is a rich set of classes, interfaces, structures and enumerated types that manage
data access from various types of data stores.
ADO.NET provides a bridge between the front end controls and the
back end database. The ADO.NET objects encapsulate all the data access
operations and the controls interact with these objects to display data, thus
hiding the details of movement of data.
ADO.NET is an object-oriented set of libraries that allows you to interact with data
sources. Commonly, the data source is a database, but it could also be a text file, an
Excel spreadsheet, or an XML file. For the purposes of this tutorial, we will look at
ADO.NET as a way to interact with a data base.
As you are probably aware, there are many different types of databases available. For
example, there is Microsoft SQL Server, Microsoft Access, Oracle, Borland Interbase,
and IBM DB2, just to name a few. To further refine the scope of this tutorial, all of
the examples will use SQL Server.
Enterprise applications handle a large amount of data. This data is primarily stored in relational
databases, like Oracle, SQL Server, Access and so on. These databases use Structured Query
Language (SQL) for retrieval of data.
To access enterprise data from a .NET application, an interface was needed. This interface acts as
a bridge between an RDBMS system and a .Net application. ADO.NET is such an interface that is
created to connect .NET applications to RDBMS systems.
In the .NET framework, Microsoft introduced a new version of Active X Data Objects (ADO) called
ADO.NET. Any .NET application, either Windows based or web based, can interact with the
database using a rich set of classes of the ADO.NET library. Data can be accessed from any
database using connected or disconnected architecture.
There were many data access technologies available prior to ADO.NET, primarily the following:
Open Database Connectivity (ODBC)
Data Access Objects (DAO)
Remote Data Objects (RDO)
Active X Data Objects (ADO)
ADO is a simple component based object-oriented interface to access data whether relational or
non-relational databases. It is a successor of DAO and RDO.
ADO reduces the number of objects. Their properties, methods and events.
ADO is built on COM; specifically Activex
ADO supports universal data access using the Object Linking and Embedding for DataBases
(OLEDB). This means that there are no restrictions on the type of data that can be accessed.
1. Connected Architecture
2. Disconnected Architecture
ADO.NET Architecture
ADO.NET uses a multilayer architecture that mainly has a few concepts, for instance Connection,
Reader, Command, Adapter and Dataset objects. ADO.NET introduced data providers that are a set
of special classes to access a specific database, execute SQL commands and retrieve data. The
Data providers are extensible. Developers can create their own providers for a proprietary data
source. There are some examples of data providers such as SQL Server providers, OLE DB and
Oracle provider.
Connection-based: They are the data provider objects such as Connection, Command,
DataAdapter and DataReader. They execute SQL statements and connect to a database.
Content-based: They are found in the System.Data namespace and includes DataSet,
DataColumn, DataRow and DataRelation. They are completely independent of the type of
data source.
Connected and Disconnected Architectures
The following figure shows how to work with the connected and disconnected architectures.
Connected Architecture
1. In the connected architecture, connection with a data source is kept open constantly for data
access as well as data manipulation operations.
2. The ADO.NET Connected architecture considers mainly three types of objects.
o SqlConnection con;
o SqlCommand cmd;
o SqlDataReader dr;
Disconnected Architecture
1. Disconnected is the main feature of the .NET framework. ADO.NET contains various classes that
support this architecture. The .NET application does not always stay connected with the database.
The classes are designed in a way that they automatically open and close the connection. The
data is stored client-side and is updated in the database whenever required.
2. The ADO.NET Disconnected architecture considers primarily the following types of objects:
o DataSet ds;
o SqlDataAdapter da;
o SqlConnection con;
o SqlCommandBuilder bldr;
Connection Class
You need to establish a connection class object for inserting, updating, deleting and
retrieving data from a database. The Connection class allows you to establish a connection
to the data source. The Connection class object needs the necessary information to discover
the data source and this information is provided by a connection string.
1. One of the first ADO.NET objects is the connection object, that allows you to establish a
connection to a data source.
2. The connection objects have the methods for opening and closing connections, for beginning a
transaction of data.
3. The .Net Framework provides two types of connection classes:
The sqlconnection object, that is designed specially to connect to Microsoft SQL Server and the
OleDbConnection object, that is designed to provide connection to a wide range of databases,
such as Microsoft Access and Oracle.
4. A connection is required to interact with the database. A Connection object helps to identify the
database server name, user name and password to connect to the database. The Connection
object is used by commands on the database.
5. A Connection object has the responsibility of establishing a connection with the data store.
6. How to use the Sqlconnection object:
o Instantiate the SqlConnection class.
o Open connection.
o Pass the connection to ADO.NET objects.
o Perform the database operations with ADO.NET object.
o Close the connection.
Connection String
The connection string is different for each of the various data providers available in .NET 2.0. There are
different connection strings for the various types of data sources. You can find a list of all the available
providers for creating a connection in a table:.
No Provider Description
1 System.Data.SqlClient Provides data for Microsoft SQL Server
2 System.Data.OleDb Provides data access for data sources exposed using OLE DB
3 System.Data.Odbc Provides data access for data source exposed using ODBC.
4 System.Data.OracleClient Provides data access for Oracle.
Example
SqlConnection con;
con = new SqlConnection("Server=Krushna;Database=Anagha;Uid=sa;Pwd=sa");
2. Command Object
A Command object executes SQL statements on the database. These SQL statements can be
SELECT, INSERT, UPDATE, or DELETE. It uses a connection object to perform these actions on the
database.
A Connection object specifies the type of interaction to perform with the database, like SELECT,
INSERT, UPDATE, or DELETE.
A Command object is used to perform various types of operations, like SELECT, INSERT, UPDATE,
or DELETE on the database.
SELECT
INSERT
UPDATE
DELETE
1. ExecuteScaler()
Executes the query, and returns the first column of the first row in the result set returned by the
query. Extra columns or rows are ignored.
2. ExecuteReader()
3. ExecuteNonQuery()
A DataReader object is used to obtain the results of a SELECT statement from a command object. For
performance reasons, the data returned from a data reader is a forward-only stream of data. This means
that the data can be accessed from the stream in a sequential manner. This is good for speed, but if data
needs to be manipulated then a dataset is a better object to work with.
Example
dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
A Data Adapter represents a set of data commands and a database connection to fill the dataset
and update a SQL Server database.
A Data Adapter contains a set of data commands and a database connection to fill the dataset
and update a SQL Server database. Data Adapters form the bridge between a data source and a
dataset.
Data Adapters are designed depending on the specific data source. The following table shows the
Data Adapter classes with their data source.
Data Source
A Data Adapter object accesses data in a disconnected mode. Its object contains a reference to a
connection object.
It is designed in a way that it implicitly opens and closes the connection whenever required.
It maintains the data in a DataSet object. The user can read the data if required from the dataset
and write back the changes in a single batch to the database. Additionally, the Data Adapter
contains a command object reference for SELECT, INSERT, UPDATE, and DELETE operations on the
data objects and a data source.
A Data Adapter supports mainly the following two methods:
Fill ()
The Fill method populates a dataset or a data table object with data from the database. It
retrieves rows from the data source using the SELECT statement specified by an associated select
command property.
The Fill method leaves the connection in the same state as it encountered it before populating the
data. If subsequent calls to the method for refreshing the data are required then the primary key
information should be present.
Update ()
The Update method commits the changes back to the database. It also analyzes the RowState of
each record in the DataSet and calls the appriopriate INSERT, UPDATE, and DELETE statements.
A Data Adapter object is formed between a disconnected ADO.NET object and a data source.
Example
5. DataSet Object
In the disconnected scenario, the data retrieved from the database is stored in a local buffer
called DataSet. It is explicitly designed to access data from any data source. This class is defined in
the System.Data namespace.
A Data Set object is an in-memory representation of the data. It is specially designed to manage
data in memory and to support disconnected operations on data.
A Data Set is a collection of DataTable and DataRelations. Each DataTable is a collection of
DataColumn, DataRows and Constraints.
A DataTable, DataColumn and DataRows could be created as follows.
Example
Automatically generates insert, update, delete queries using the SelectCommand property of a
DataAdapter.
A Command Builder Object is used to build commands for data modification from objects based
on a single table query. CommandBuilders are designed depending on the specific data source.
The following table shows the CommandBuilder classes with their data source.
Example
Answer
Answer
Example
Add two buttons and a DataGridView control. Change the text of the first button to sort by city and that
of button2 to only select records in Mexico and add the code in form.cs.
Form Design
Coding Part
SqlConnection con;
SqlCommand cmd;
SqlDataReader dr;
Form1_Load
dataGridView1.DataSource = GetTable().DefaultView;
ShortByCity_Click
OnlyInMexico_Click
At the click of the sort by city button, the data already in the DataGridView control is sotred dy
city.
On clicking the second button, only the records in Mexico are displayed in the DataGridView
control. The output after clicking the only in Mexico button is as the Mexico button.
Program: Design a simple Winform for accepting the details of Employee. Using the connected
architecture of ADO.NET, perform the following operations:
Insert record.
Search record.
Update record.
Delete record.
1. Form Design
2. Coding Part
SqlConnection con;
SqlCommand cmd;
SqlDataReader dr;
Step3: Form1_Load
con.Open();
int aa = Convert.ToInt32(textBox1.Text);
string bb = textBox2.Text;
int cc = Convert.ToInt32(textBox3.Text);
cmd =new SqlCommand("INSERT INTO Employee(Emp_ID, Emp_Name,Salary)VALUES ('" + aa
+"','" + bb +"','" + cc + "')", con);
cmd.ExecuteNonQuery();
MessageBox.Show("one record inserted:");
con.Close();
Display();
Deletebtn_Click
con.Open();
int aa = Convert.ToInt32(textBox1.Text);
cmd =new SqlCommand("DELETE FROM Employee where Emp_ID='" + aa + "'", con);
cmd.ExecuteNonQuery();
MessageBox.Show("one record Delete:");
con.Close();
Display();
Updatebtn_Click
con.Open();
int aa = Convert.ToInt32(textBox1.Text);
string bb = textBox2.Text;
int cc = Convert.ToInt32(textBox3.Text);
string abc = "UPDATE Employee SET Emp_ID ='" + aa + "', Emp_Name ='" + bb + "',Salary ='" +
cc + "' WHERE Emp_ID = '" + aa +"'";
SqlCommand cmd =new SqlCommand(abc, con);
cmd.ExecuteNonQuery();
MessageBox.Show("one record updated:");
con.Close();
Display();
Displaybtn_Click
Display();
Searchbtn_Click
con.Open();
int aa = Convert.ToInt32(textBox1.Text);
string abc = "SELECT Emp_ID,Emp_Name,Salary FROM Employee where Emp_ID='" + aa +"'";
cmd =new SqlCommand(abc, con);
MessageBox.Show("one record search:");
dr = cmd.ExecuteReader();
DataTable dt =new DataTable();
dt.Load(dr);
dataGridView1.DataSource = dt;
con.Close();
Totalrecordbtn_Click
con.Open();
cmd = new SqlCommand("select Count(*) from Employee", con);
int a = (int)cmd.ExecuteScalar();
label4.Text = "Total Record:--> " + a.ToString();
con.Close();
Exit_Click
Application.Exit();
Program: Design a Simple Winform for accepting the details of an Employee. Using the connected
architecture of ADO.NET, perform the following operations:
Insert record.
Search record.
Update record.
Delete record.
Form Design
Coding Part
OleDbConnection con;
OleDbCommand cmd;
OleDbDataReader dr;
Step 3: Form1_Load
Display_Click
display();
Insert_Click
con.Open();
int aa = Convert.ToInt32(textBox1.Text);
string bb = textBox2.Text;
int cc = Convert.ToInt32(textBox3.Text);
cmd = new OleDbCommand("INSERT INTO Employee(Emp_ID, Emp_Name,Salary) VALUES ('" + aa + "','" +
bb + "','"+ cc + "')", con);
cmd.ExecuteNonQuery();
MessageBox.Show("one record inserted:");
con.Close();
display();
Delete_Click
con.Open();
int aa = Convert.ToInt32(textBox1.Text);
cmd = new OleDbCommand("DELETE FROM Employee where Emp_ID='" + aa + "'", con);
cmd.ExecuteNonQuery();
MessageBox.Show("one record Delete:");
con.Close();
display();
update_Click
con.Open();
int aa = Convert.ToInt32(textBox1.Text);
string bb = textBox2.Text;
int cc = Convert.ToInt32(textBox3.Text);
string abc = "UPDATE Employee SET Emp_ID ='" + aa + "', Emp_Name ='" + bb + "', Salary ='" + cc + "'
WHERE Emp_ID = '" + aa + "'";
OleDbCommand cmd = new OleDbCommand(abc, con);
cmd.ExecuteNonQuery();
MessageBox.Show("one record updated:");
con.Close();
display();
Find_Click
con.Open();
int aa = Convert.ToInt32(textBox1.Text);
string abc = "SELECT Emp_ID,Emp_Name,Salary FROM Employee where Emp_ID='" + aa + "'";
cmd = new OleDbCommand(abc, con);
MessageBox.Show("one record search:");
dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
dataGridView1.DataSource = dt;
con.Close();
Exit_Click
Application.Exit();
Program: Design a simple Winform for accepting the details of an Employee. Using the disconnected
architecture of ADO.NET, perform the following operations.
Insert record.
Display record.
Update record.
Delete record
Form Design
Coding Part
DataSet ds;
SqlDataAdapter da;
SqlConnection con;
SqlCommandBuilder bldr;
Step 3:
Form1_Load
Display_Click
display();
Insert_Click
Delete_Click
Update_Click
DataRow dr = ds.Tables[0].Rows.Find(textBox1.Text);
dr["Emp_Name"] = textBox2.Text;
dr["Salary"] = textBox3.Text;
da.Update(ds, "Emp");
MessageBox.Show("updated..");
dataGridView1.DataSource = ds.Tables[0];
FirstRcd_Click
this.BindingContext[ds.Tables[0]].Position = 0;
LastRcd_Click
this.BindingContext[ds.Tables[0]].Position = ds.Tables[0].Rows.Count - 1;
NextRcd_Click
if (this.BindingContext[ds.Tables[0]].Position > 0)
{
this.BindingContext[ds.Tables[0]].Position -= 1;
}
PreviousRcd_Click
DataGridView is very powerful and flexible control for displaying records in a tabular (row-
column) form. Here I am describing a different way of databinding with a DataGridView
control.
Step 1 : Select DataGridView control and click at smart property. Look at the following
figure.
Step 4 : Click at Add Project Data Source (Look at above figure). A new window will be
opened to choose Data Source Type.
Step 5 : Choose Database (By default it is selected) and click the next button. A new
window will be open to Database Model.
Step 6 : Select DataSet (By default it is selected) and click the next button. A new window
will be open.
Output
Now we bind the DataGridView with database by code. Take another DataGridView control
and write the following code on the form load event.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace DatabindingWithdataGridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlDataAdapter dadapter;
DataSet dset;
string connstring = "server=.;database=student;user=sa;password=wintellect";
private void Form1_Load(object sender, EventArgs e)
{
dadapter = new SqlDataAdapter("select * from student_detail", connstring);
dset = new System.Data.DataSet();
dadapter.Fill(dset);
dataGridView1.DataSource = dset.Tables[0].DefaultView;
}
}
}
Run the application. Output will be same as above.
Step 1
Create a Windows Forms Application Project, and place a DataGridView on the form.
Step 2
Click on the pin button on right-up side of DataGridView and click add project DataSource.
And follow these simple steps.
Step 4
See the properties of the Adapter on DataSet, whether it has a query for updating or not. If
not then add an update query.
Step 5
A line is automatically generated, when you bind the DataGridView to the dataset. As: