Bài viết hôm nay mình đang hướng dẫn các bạn sử dụng các đối tượng người tiêu dùng cơ bạn dạng trong ADO.NET: DataReader, DataAdapter, Dataset, Data Table. Cách áp dụng chúng ra sao trong ngôn ngữ C#, VB.NET.

Bạn đang xem: Cách dùng dataset trong c#

HƯỚNG DẪN SỬ DỤNG DataReader, DataAdapter, Dataset, DataTable trong C#, VB.NET

*

1. DataReader:

Một SqlDataReader là đối tượng tương xứng để đọc dữ liệu một cách tác dụng nhất. Như tên gọi, các bạn không thể cần sử dụng nó để ghi dữ liệu. SqlDataReader thường được miêu tả là luồng dữ liệu fast-forward firehose-like (fire-hose: ống vòi vĩnh rồng).

Bạn có thể đọc dữ liệu từ đối tượng SqlDataReader theo phía forward-only trong một sản phẩm tự tốt nhất định. Những lần đọc một vài dữ liệu, chúng ta phải giữ nó nếu buộc phải thiết cũng chính vì bạn không thể trở lại và đọc nó một lần nữa.

Kiểu xây dựng forward-only của SqlDataReader sẽ giúp đỡ nó hoạt động nhanh. Nó ko thể di chuyển trực tiếp đến các loại dữ liệu ở vị trí bất kì và cần thiết ghi vào tài liệu nguồn. Bởi vì đó, nếu như bạn chỉ yêu cầu đọc một đội dữ liệu một lần cùng cần cách thức nhanh nhất, SqlDataReader là lựa chọn xuất sắc nhất.

Xem thêm: Wax Lông Có Tốt Không ? Wax Tẩy Lông, Không Nên!

Source code C#:

string constring = ConfigurationManager.ConnectionStrings<"constr">.ConnectionString;using (SqlConnection bé = new SqlConnection(constring)) using (SqlCommand cmd = new SqlCommand("SELECT Name, thành phố FROM Persons", con)) cmd.CommandType = CommandType.Text; con.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) string name = dr<"Name">.ToString(); string city = dr<"City">.ToString(); Response.Write("Name: " + name); Response.Write("City: " + city); con.Close(); Source code VB.NET

Dim constring As String = ConfigurationManager.ConnectionStrings("constr").ConnectionStringUsing bé As New SqlConnection(constring) Using cmd As New SqlCommand("SELECT Name, thành phố FROM Persons", con) cmd.CommandType = CommandType.Text con.Open() Dim dr As SqlDataReader = cmd.ExecuteReader() While dr.Read() Dim name As String = dr("Name").ToString() Dim đô thị As String = dr("City").ToString() Response.Write("Name: " và name) Response.Write("City: " & city) over While con.Close() over UsingEnd Using2. DataAdapter 

Để cho chúng ta dễ đọc DataAdater, trường đoản cú DataAdapter chính là cầu nối thân Dataset và Datasource. Mình hoàn toàn có thể ví dụ như sau:

Bạn chỉ việc tưởng tượng rằng : chúng ta có một chiếc bể nước (DataSource) , một cái máy bơm (DataAdapter) và một cái thùng đựng nước (DataSet). Thì khi lấy nước dùng dòng bơm mang nước tự bể, đánh giá và lọc nước tiếp nối lại dùng dòng bơm hút lại về chiếc bể nước. Đó đó là vai trò của dòng bơm với DataAdapter tương tự như vậy. 

Source code C#

string constring = ConfigurationManager.ConnectionStrings<"constr">.ConnectionString;using (SqlConnection bé = new SqlConnection(constring)) using (SqlCommand cmd = new SqlCommand("SELECT Name, thành phố FROM Persons", con)) cmd.CommandType = CommandType.Text; using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) DataSet ds = new DataSet(); sda.Fill(ds); foreach (DataRow row in ds.Tables<0>.Rows) string name = row<"Name">.ToString(); string city = row<"City">.ToString(); Response.Write("Name: " + name); Response.Write("City: " + city); Source code VB.NET

Dim constring As String = ConfigurationManager.ConnectionStrings("constr").ConnectionStringUsing con As New SqlConnection(constring) Using cmd As New SqlCommand("SELECT Name, đô thị FROM Persons", con) cmd.CommandType = CommandType.Text Using sda As New SqlDataAdapter(cmd) Dim ds As New DataSet() sda.Fill(ds) For Each row As DataRow In ds.Tables(0).Rows Dim name As String = row("Name").ToString() Dim đô thị As String = row("City").ToString() Response.Write("Name: " và name) Response.Write("City: " và city) Next over Using kết thúc UsingEnd Using3. DataSet

DataSet là một đối tượng người tiêu dùng có thể chứa đựng nhiều DataTable cùng với mối tương tác giữa bọn chúng (relationship) với kể những ràng buộc (constraint) được lưu trọn vẹn trong bộ lưu trữ để thao tác offline. Qua nội dung bài viết này, bạn cũng có thể hiểu kết cấu của DataSet, DataTable tương tự như nạp dữ liệu, chế tạo ra relation, constraint và thao tác dữ liệu trên các đối tượng người sử dụng dữ liệu này.

DataSet vào ADO.NET là một trong những bước phát triển lớn vào việc cách tân và phát triển ứng dụng cơ sở dữ liệu đa hệ. Khi đem và chỉnh sửa dữ liệu, gia hạn liên tục kết nối tới Data Source trong những khi chờ user yêu ước thì cụ thể là tốn khoáng sản máy vô cùng nhiều.DataSet góp ích ở chỗ này rất lớn. Do DataSet có thể chấp nhận được lưu trữ dữ liệu và sửa đổi tại ‘local cache’, hay điện thoại tư vấn là offline mode. Có thể xem xét và xử trí thông tin trong những lúc ngắt kết nối. Sau thời điểm chỉnh sửa với xem chấm dứt thì tạo nên một liên kết và update tài liệu từ local vào Data Source. 

Source code C#

string constring = ConfigurationManager.ConnectionStrings<"constr">.ConnectionString;using (SqlConnection con = new SqlConnection(constring)) using (SqlCommand cmd = new SqlCommand("SELECT Name, đô thị FROM Persons", con)) cmd.CommandType = CommandType.Text; using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) DataSet ds = new DataSet(); sda.Fill(ds); foreach (DataRow row in ds.Tables<0>.Rows) string name = row<"Name">.ToString(); string city = row<"City">.ToString(); Response.Write("Name: " + name); Response.Write("City: " + city); Source code VB.NET

Dim constring As String = ConfigurationManager.ConnectionStrings("constr").ConnectionStringUsing nhỏ As New SqlConnection(constring) Using cmd As New SqlCommand("SELECT Name, thành phố FROM Persons", con) cmd.CommandType = CommandType.Text Using sda As New SqlDataAdapter(cmd) Dim ds As New DataSet() sda.Fill(ds) For Each row As DataRow In ds.Tables(0).Rows Dim name As String = row("Name").ToString() Dim thành phố As String = row("City").ToString() Response.Write("Name: " & name) Response.Write("City: " & city) Next over Using over UsingEnd Using4. Data Table

Nằm vào lớp : System.Data.DataTable. Có cấu trúc theo cấu trúc của bảng trong cơ sở tài liệu gồm các hàng cùng cột nên tất cả 2 thành phần hẳn nhiên là : DataRow và DataColumnDataRow đang là tập hợp các cột (record-set).

Một Dataset có thể chứa một hoặc nhiều Data Table

Source code C#

string constring = ConfigurationManager.ConnectionStrings<"constr">.ConnectionString;using (SqlConnection con = new SqlConnection(constring)) using (SqlCommand cmd = new SqlCommand("SELECT Name, thành phố FROM Persons", con)) cmd.CommandType = CommandType.Text; using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) DataTable dt = new DataTable(); sda.Fill(dt); foreach (DataRow row in dt.Rows) string name = row<"Name">.ToString(); string đô thị = row<"City">.ToString(); Response.Write("Name: " + name); Response.Write("City: " + city); Source code VB.NET

Dim constring As String = ConfigurationManager.ConnectionStrings("constr").ConnectionStringUsing nhỏ As New SqlConnection(constring) Using cmd As New SqlCommand("SELECT Name, city FROM Persons", con) cmd.CommandType = CommandType.Text Using sda As New SqlDataAdapter(cmd) Dim dt As New DataTable() sda.Fill(dt) For Each row As DataRow In dt.Rows Dim name As String = row("Name").ToString() Dim city As String = row("City").ToString() Response.Write("Name: " và name) Response.Write("City: " & city) Next end Using kết thúc UsingEnd UsingSo sánh DataSet và DataReaderNếu bạn đơn giản và dễ dàng chi ao ước lấy tài liệu và trình diễn nó ra thôi thì dùng DataReader. Đặc biệt trường đúng theo mà độc giả với một trong những lượng bự dữ liệu, ví như là vòng lặp tới hàng ngàn dòng hiệu quả dữ liệu, bạn muốn tốc độ đọc cấp tốc và trình diễn nhanh thì DataReader được sử dụng cho mục đích này, nhanh và TIỆN LỢI, cho việc ĐỌC dữ liệu.Nếu bạn muốn chỉnh sử tài liệu rồi update thông tin dữ liệu lại database thì bạn áp dụng DataSet. DataAdapter che đầy (fill) dữ liệu vào DataSet bằng phương pháp sử dụng một DataReader, cung ứng đó resource rất cần phải lưu trữ vào để sử dụng khi ngắt kết nối. Vày vậy việc sử dụng DataSet tốn các tài nguyên rộng DataReader khôn xiết nhiều, bạn cần cân nhắc ở trên đây lúc nào sử dụng thành phần nào thì tốt, né lạm dụng quá. Ví như như bạn có nhu cầu đọc tài liệu và viết ra bên dưới dạng XML, hoặc export database schema, viết lại db dưới dạng XML,…. Thì cần sử dụng DataReader.