ADO.NET - ADO.NET SqlDataReader

Lớp ADO.NET SqlDataReader

Bạn có thể đọc dữ liệu từ đối tượng DataReader theo hướng forward-only trong một thứ tự nhất định. Mỗi lần đọc một vài dữ liệu, bạn phải lưu nó nếu cần thiết bởi vì bạn không thể quay trở lại và đọc nó một lần nữa.
Kiểu thiết kế forward-only của DataReader để giúp nó hoạt động nhanh. Nó không thể di chuyển trực tiếp đến các dòng dữ liệu ở vị trí bất kì và không thể ghi vào dữ liệu nguồn. Do đó, nếu bạn chỉ yêu cầu đọc một nhóm dữ liệu một lần và cần phương pháp nhanh nhất, DataReader là lựa chọn tốt nhất.
Tùy theo loại Connection mà DataReader thuộc tên miền:

public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable  

Thuộc tính SqlDataReader 

Thuộc tính Mô tả
Connection Để  kết nối giữa SqlConnection với SqlDataReader.
Depth Lấy một giá trị chỉ ra độ sâu của lồng cho hàng hiện tại..
FieldCount  Trả về số trường có trong record hiện hành.
HasRows Lấy tổng số dòng trong một câu truy vấn.
IsClosed

Trả về giá trị boolean xác định đối tượng DataReader có bị đóng hay không.

Item[String] Trị của cột truyền vào. Tham số truyền vào là tên cột.
Item[Int32] Trị của cột truyền vào. Tham số truyền vào là số chỉ mục, cột đầu tiên là 0.
RecordsAffected Lấy tổng dòng bị ảnh hưởng khi : thêm, cập nhật, xóa.
VisibleFieldCount Lấy số lượng các trường trong SqlDataReader không bị ẩn.

Các phương thức

Phương thức Mô tả
Close() Đóng đối tượng SqlDataReader .
GetBoolean(Int32) Lấy các giá trị tại cột đang xét tùy vào kiểu Boolean.
GetByte(Int32) Lấy các giá trị tại cột đang xét tùy vào kiểu byte.
GetChar(Int32) Lấy các giá trị tại cột đang xét tùy vào kiểu character.
GetDateTime(Int32) Lấy các giá trị tại cột đang xét tùy vào kiểu DateTime object.
GetDecimal(Int32) Lấy các giá trị tại cột đang xét tùy vào kiểu Decimal object.
GetDouble(Int32) Lấy các giá trị tại cột đang xét tùy vào kiểu Double.
GetFloat(Int32) Lấy các giá trị tại cột đang xét tùy vào kiểu FLoat.
GetName(Int32) Lấy tên cột.
GetSchemaTable() Lấy mô tả siêu dữ liệu cột của SqlDataReader.
GetValue(Int32) Lấy về giá trị hoặc tập giá trị ở dạng “nguyên thủy” ( kiểu dữ liệu gốc của Database).
GetValues(Object[]) Được sử dụng để điền vào một mảng các đối tượng với các giá trị cột của hàng hiện tại.
NextResult() Nhóm Kết quả tiếp theo.
Read() Record tiếp theo.

Để tạo ra một đối tượng SqlDataReader , chúng ta phải gọi phương thức  ExecuteReader trong đối tượng SqlCommand.


Ví dụ

Trong ví dụ này, chúng ta sẽ sử dụng SqlDataReader để lấy dữ liệu từ SQL Server. 

// Program.cs 

using System;  
using System.Data.SqlClient;  
namespace AdoNetConsoleApplication  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            new Program().GetData();  
        }  
        public void GetData()  
        {  
            SqlConnection con = null;  
            try  
            {  
                // Creating Connection  
                con = new SqlConnection("data source=.; database=student; integrated security=SSPI");  
                // writing sql query  
                SqlCommand cm = new SqlCommand("select * from student", con);  
                // Opening Connection  
                con.Open();  
                // Executing the SQL query  
                SqlDataReader sdr = cm.ExecuteReader();  
                while (sdr.Read())  
                {  
                    Console.WriteLine(sdr["name"]+" "+ sdr["email"]);  
                }  
            }  
            catch (Exception e)  
            {  
                Console.WriteLine("OOPs, something went wrong." + e);  
            }  
            // Closing the connection  
            finally  
            {  
                con.Close();  
            }  
        }  
    }  
}  

Kết quả:

ADO Net Sqldatareader Class 1