Thursday, 27 June 2013

How To Use DataReader

DataReader
The DataReader provides a read-only, forward-only stream of results from a database query or stored procedure and we can  use a DataReader if it is desirable,and possible, to keep the connection to the database open while data is being processed.A DataReader is a lightweight object  which  provides read-only,forward-only data in a very fast and efficient way . DataReader is efficient than using a DataAdapter but it is limited  and  Data access with DataReader is read-only, i.e, you  cannot make any changes (update) to data and forward-only, i.e we cannot go back to the previous record which was accessed.  DataReader requires the exclusive use of an active connection for the entire time if it is in existence and we instantiate a DataReader by calling  a Command object's ExecuteReader command. When the DataReader is first returned it is positioned before the first record of the result set. To making the first record available we   need to call the Read method and  If a record is exist, the Read method moves the DataReader for  next record and returns True and  If a record is not available then  the Read method returns False. we can   use a While Loop to iterate through the records with the Read method.
Example  of  DataReader

using System;
using System.Data;
using System.Data.SqlClient;
public class empnamereader {
public static void Main() {
SqlConnection con = new SqlConnection(
@"server=(local)\mycomputer;database=emp;trusted_connection=yes"
);
string s = "SELECT * FROM emp";

con.Open();
sqlcommand cmd=new sqlcommand(s, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read()) {
Console.WriteLine(sdr["empname"] );
}
con.Close();
}
}
Data Retrieval Methods of the DataReader Object

MethodField Type
GetBoolean()Bool
GetByte()Byte
GetChar()Char
GetDateTime()DateTime
GetDecimal()Decimal
GetDouble()Double
GetFloat()Float
GetGuid()Guid
GetInt16()Int16
GetInt32()Int32
GetInt64()Int64
GetString()String

Differences between “DataSet” and “DataReader”.

                          DataSet                                          DataReader
DataSet object can contain multiple rowsets from the same data source as well as from the relationships between them.
Dataset is a disconnected architecture.
Dataset can persist data.
A DataSet is well suited for data that needs to be retrieved from multiple tables.
 DatsSet is slower than DataReader ,Due to overhead.

DataReader provides forward-only and read-only access to data.
Datareader is connected architecture.
Datareader can not persist data.
It has live connection while reading data
Speed performance is better in DataReader

Limitations of the DataReader
There is  not possible to sort, filter, or manipulate the data while using a DataReader, since it is read-only and forward-only.

No comments: