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ả: