You are on page 1of 23

Developing Data-Centric Applications Using ADO.

NET
Objectives

In this session, you will learn to:


Working in a disconnected environment

Ver. 1.0

Session 5

Slide 1 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables

In a disconnected environment, data is stored in datasets and manipulations are performed in the datasets. After the data has been manipulated in the dataset, the changes are updated to the database. A dataset is a disconnected, cached set of records that are retrieved from a database. The dataset acts like a virtual database containing tables, rows, and columns. The two main types of datasets are:
Typed dataset Untyped dataset

Let us discuss each of these types in detail.

Ver. 1.0

Session 5

Slide 2 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.)

Typed Dataset:
A typed dataset is derived from the DataSet class and has an associated XML schema, which is created at the time of creation of the dataset. The XML schema contains information about the dataset structure such as the tables, columns, and rows. The XML Schema Definition (XSD) language is used to define the elements and attributes of XML documents. The structure of a typed dataset is decided at the time of its creation. When a typed dataset is created, the data commands are generated automatically by using the column names from the data source.

Ver. 1.0

Session 5

Slide 3 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.)

Untyped Dataset:
An untyped dataset does not have any associated XML schema. In an untyped dataset, the tables and columns are represented as collections. Because an XML schema is not created for an untyped dataset, the structure of an untyped dataset is not known during compilation. Untyped datasets find their use in cases where the structure of the schema is not decided during compilation or the data being used does not have a definite structure.

Ver. 1.0

Session 5

Slide 4 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.)

A dataset has its own object model, as shown in the following figure.

Ver. 1.0

Session 5

Slide 5 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.) A dataset is created with the help of a DataSet object. The DataSet object is present in a DataSet class and is defined in the System.Data namespace. The DataSet object contains a collection of DataTable objects, each containing one or more tables. A DataTable object contains one or more columns, each represented by a DataColumn object. To add a column to a DataTable, create a DataColumn object and call the Add() method on the Columns collection, which enables you to access the columns in a datatable.

Ver. 1.0

Session 5

Slide 6 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.)

The following list describes some parameters that can be specified for a column:
The name of the column The data type of the column Whether the column is read only Whether the column permits null values Whether the value of the column must be different in each row Whether the column is an auto-increment column Whether the column is an expression column

Ver. 1.0

Session 5

Slide 7 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.)

Consider the following code snippet used for adding columns in a DataTable:
DataSet ds = new DataSet(); DataTable dt = ds.Tables.Add(); dt.Columns.Add(Store Id, typeof(string)); dt.Columns.Add(Store Name, typeof(string)); dt.Columns.Add(Address, typeof(string));
Creating a DataSet object Creating a DataTable object Adding columns in a DataTable

Ver. 1.0

Session 5

Slide 8 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.) A DataTable object also has a Rows collection that allows rows to be accessed in a dataset. The various methods performed on a row by using the DataRow object are:
Add() InsertAt() Find() Select() Remove() RemoveAt() Delete()
Appends the row to the end of the table Inserts the row at a specified position Accesses a row in a table by its primary key value Finds rows that match a specified condition Removes the specified DataRow object Removes the row at a specified position Removes a row provisionally from a table

Ver. 1.0

Session 5

Slide 9 of 23

Developing Data-Centric Applications Using ADO.NET


Just a minute Which method of the DataRow object accesses a row in a table by its primary key value?
1. 2. 3. 4. Find() Select() InsertAt() Add()

Answer:
1. Find()

Ver. 1.0

Session 5

Slide 10 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.)

In ADO.NET, you can navigate through multiple tables to validate and summarize the data by using the DataRelation object. By using primary key and foreign key constraints that use a DataRelation object, you can create the relationship between multiple tables. The primary key is a unique index and ensures the uniqueness of data stored in that table for that particular row. The foreign key is a constraint on a table that can reference one or more columns in that table. The table that has a primary key constraint is known as the Parent table, and the table that has a foreign key constraint is known as the Child table.
Ver. 1.0

Session 5

Slide 11 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.) A DataSet.Relations property gets the collection of relations that link tables and allow navigation from Parent tables to Child tables. The Rule enumeration indicates the action that occurs when a foreign key constraint is enforced. The various Rule enumeration values are:
Cascade None
Deletes or updates the child DataRow object when the parent DataRow object is deleted or its unique key is changed Throws an exception if the parent DataRow object is deleted or its unique key is changed Sets the foreign key column(s) value to the default value of the DataColumn object(s), if the parent DataRow object is deleted or its unique key is changed Sets the foreign key column(s) value to DbNull, if the parent DataRow object is deleted or its unique key is changed

SetDefault
SetNull

Ver. 1.0

Session 5

Slide 12 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.) Sometimes, the data available in one DataSet can be merged with another DataSet. Or, a copy of the DataTable objects can be created so that the user can edit or modify data, which can then be merged back to the original dataset. The Merge() method is used to combine data from multiple DataSet, DataTable, and DataRow objects. During merging of data within datasets, the MissingSchemaAction enumeration specifies the action to be taken when the data added to the dataset and the required DataTable or DataColumn is missing.

Ver. 1.0

Session 5

Slide 13 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Datasets and Datatables (Contd.) The various values of MissingSchemaAction enumeration are:
Add AddWithPrimaryKey
Adds the DataTable and DataColumn objects to complete the schema Adds the DataTable, DataColumn, and PrimaryKey objects to complete the schema Throws an exception if the DataColumn does not exist in the DataSet that is being updated Ignores data that resides in DataColumns that are not in the DataSet being updated

Error
Ignore

Ver. 1.0

Session 5

Slide 14 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Dataviews

A dataview provides a dynamic view of data stored in a datatable. If any data is modified in the datatable, the dataview associated with the datatable will also show the modified data. Let us understand the object model of a dataview.

Ver. 1.0

Session 5

Slide 15 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Dataviews (Contd.)

The following figure shows the object model of a dataview.


DataSet Object DataTable Object DefaultView DataView Object Default Sort/Filter Criteria

DataView Objects Additional Views Alternative Sort/Filter Criteria

Ver. 1.0

Session 5

Slide 16 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Dataviews (Contd.) A DataView object creates a fixed customized view of a given DataTable object. You can create a DataView object to display the data based on a criterion and another DataView object to display the data based on a different criterion. The following figure shows how customized data is displayed through dataviews.
Filter3 Filter2 Filter1 DataView1 Windows Application DataTable DataView2 DataView3

Ver. 1.0

Session 5

Slide 17 of 23

Developing Data-Centric Applications Using ADO.NET


Working with Dataviews (Contd.)

A dataview provides a sorted or filtered view of data in a datatable. Sorting in a DataTable by using a DataView object is done by using the Sort property. Filtering a DataTable by using the DataView object is done by using the RowFilter and RowStateFilter properties.

Ver. 1.0

Session 5

Slide 18 of 23

Developing Data-Centric Applications Using ADO.NET


Just a minute Which property of the DataView object returns a subset of rows on the basis of the column values?
1. 2. 3. 4. FindRows RowFilter RowStateFilter Find

Answer:
2. RowFilter

Ver. 1.0

Session 5

Slide 19 of 23

Developing Data-Centric Applications Using ADO.NET


Demo: Manipulating Data in a Disconnected Environment

Problem Statement:
Jane, a member of the HR team at Tebisco, needs to store the details of employees who have recently joined the organization. You need to create an application for Jane that will enable her to add and save the details of new employees, and if required, delete records of employees who are no longer working in the organization. The employee code should get automatically generated based on the format in the table. The employee details will be stored in the empdetails table of the HR database.

Ver. 1.0

Session 5

Slide 20 of 23

Developing Data-Centric Applications Using ADO.NET


Summary

In this session, you learned that:


A dataset, which is a part of disconnected environment, is a disconnected, cached set of records that are retrieved from a database. The two main types of datasets are:
Typed datasets Untyped datasets

A typed dataset is derived from the DataSet class and has an associated XML schema, which is created at the time of creation of a dataset. An untyped dataset does not have any associated XML schema. As a result, the structure of an untyped dataset is not known during compilation.

Ver. 1.0

Session 5

Slide 21 of 23

Developing Data-Centric Applications Using ADO.NET


Summary (Contd.)
The DataSet object contains a collection of DataTable objects, each containing one or more tables. A DataTable object contains one or more columns, each represented by a DataColumn object. A DataTable object also has a Rows collection, which allows rows to be accessed in a dataset. A DataTable object contains one or more rows, each represented by a DataRow object. The DataRelation object is used to navigate through multiple tables to validate and summarize the data. The primary key and foreign key constraints in a DataRelation object create the relationship between the tables in a schema.

Ver. 1.0

Session 5

Slide 22 of 23

Developing Data-Centric Applications Using ADO.NET


Summary (Contd.)
The Merge() method is used to combine data from multiple DataSet, DataTable, and DataRow objects. A dataview, which is a part of the disconnected environment, enables you to create a dynamic view of data stored in a datatable. A DataTable can have multiple DataView objects assigned to it, allowing the data to be viewed in different ways without having to re-read from the database. Sorting in a DataTable by using the DataView object is done by using the Sort property. Filtering in DataTable using DataView object is done by using the RowFilter and RowStateFilter properties.

Ver. 1.0

Session 5

Slide 23 of 23

You might also like