Câu 2 các đối tượng trong ado.net là gì năm 2024

Một DataSet tương tự như một tập tin database vật lý hoàn chỉnh nhưng được lưu trong bộ nhớ. DataSet bao gồm các DataTable, DataTable bao gồm các DataColumn, DataRow, các constraint được minh họa như hình dưới:

Câu 2 các đối tượng trong ado.net là gì năm 2024

Các property của DataSet và DataTable dùng để lưu trữ các collection theo hình minh họa trên.

DataSet:

Type Name Description DataTableCollection Tables Gets the collection of tables contained in the System.Data.DataSet DataRelationCollection Relations Get the collection of relations that link tables and allow navigation from parent tables to child tables.

DataTable:

Type Name Description DataColumnCollection Columns Gets the collection of columns that belong to this table. DataRowCollection Rows Gets the collection of rows that belong to this table. ConstraintCollection Constraints Gets the collection of constraints maintained by this table.

Nạp dữ liệu vào DataTable và DataSet

Để thực hiện các ví dụ với DataSet và DataTable, tôi đã chuẩn bị một database đơn giản trên SQL Server gồm hai bảng. Để thực hiện được bước này, yêu cầu bạn phải có sẵn kiến thức về kết nối database trong ADO.Net. Bạn có thể xem tại link sau:

Connecting to a Data Source (ADO.NET)

Dữ liệu minh họa

Câu 2 các đối tượng trong ado.net là gì năm 2024

Table Groups:

GroupID GroupName 1 Member 2 Moderator 3 Super Moderator 4 Admin

Table Users:

UserID

UserName

GroupID

1 Adon

1

2 Akuma

2

3 Balrog

1

4 Bison

1

5 Blanka

3

6 Cammy

1

7 ChunLi

1

8 Cody

4

9 Dan

1

10 DeeJay

1

Nạp dữ liệu vào DataSet từ database

Phương thức sau sẽ kết nối đến database SQL Server, sau đó nạp hai table User và Group vào DataSet. Khi làm ví dụ, bạn hãy sửa chuỗi kết nối theo máy bạn và tạo các table tương ứng.

private static DataSet LoadData() {

var conn = new SqlConnection(  
    "Server=YINYANG\\SQLEXPRESS;Database=YinYangDB;Trusted_Connection=true");
conn.Open();
var cmd = "Select * from Users";  
var dataAdapter = new SqlDataAdapter(cmd, conn);
var dataSet = new DataSet();
dataAdapter.Fill(dataSet, "User");
dataAdapter.SelectCommand.CommandText = "Select * from Groups";  
dataAdapter.Fill(dataSet, "Group");
conn.Close();
return dataSet;  
} Phương thức Fill(DataSet) của DataAdapter tự động lấy tên bảng mà bạn đặt trong CommandText để đặt tên cho DataTable, tuy nhiên để chắc chắn tên bảng đúng trong trường hợp có sửa đổi, tôi dùng overload Fill(DataSet,string) để đặt tên lại cho các table.

Thay vì Fill() vào DataSet, bạn có thể dùng Fill(DataTable) để tạo ra một DataTable mới, sau đó thêm vào DataSet:

var table=new DataTable("Group"); dataAdapter.Fill(table); dataSet.Tables.Add(table);

Một số tên table có thể trùng với từ khóa mà SQL sử dụng (ví dụ: User), mặc dù điều này ít khi xảy ra nhưng bạn có thể đề phòng trước bẳng cách sử dụng quy tắc đặt tên như sử dụng tiền tố, đặt tên theo danh từ số nhiều,…

Ngoài cách nạp dữ liệu từ datatable, bạn cũng có thể tạo dữ liệu động cho DataTable thông qua các collection Columns và Rows. Phần sau sẽ giới thiệu về cách thực hiện này.

Tạo dữ liệu động cho DataTable

Kiểu dữ liệu DataColumn chứa đầy đủ các property cần thiết để bạn tạo ra một mô hình dữ liệu hoàn chỉnh cho DataTable. Ta có thể tạo một column dùng làm ID với chỉ số tự động tăng bắt đầu từ 1, không cho phép null và là duy nhất như sau:

DataColumn col = new DataColumn("ID", typeof(int)); col.AllowDBNull = false; col.AutoIncrement = true; col.AutoIncrementSeed = 1; col.Unique = true;

Các DataColumn cần thiết phải có hai thông tin là tên và kiểu dữ liệu. Khi đã có một DataTable rỗng, công việc thêm các DataColumn vào rất đơn giản. Ví dụ sau tạo một DataTable với tên Persons với ba column là ID, Name và Birthday cùng với kiểu dữ liệu tương ứng là int, string và DateTime:

DataTable table = new DataTable("Persons"); DataColumn col = new DataColumn("ID", typeof(int)); col.AllowDBNull = false; col.AutoIncrement = true; col.AutoIncrementSeed = 1; col.Unique = true; table.Columns.Add(col); table.Columns.Add("Name", typeof(string)); table.Columns.Add("Birthday", typeof(DateTime)); DataTable của chúng ta vẫn là rỗng vì chưa có dữ liệu (chỉ có mô hình dữ liệu). Để tạo một DataRow ta cần gọi phương thức DataTable.NewRow(). Phương thức này trả về một DataRow với các ô chứa dữ liệu tương ứng với các cột của DataTable. Công việc thêm dữ liệu cũng rất đơn giản, dựa vào hai overload của DataRowCollection.Add() như bạn thấy dưới đây:

 DataReader: Dùng để đón nhận kết quả trả về từ phương thức ExecuteReader của đối tượng Command. Nó tương tự như một Recordset của ADO, tuy nhiên dữ liệu là Readonly và chỉ đọc theo chiều tiến.

 DataAdapter: Là đối tượng kết nối giữa Dataset và CSDL.DataAdapter truyền dữ liệu vào một dataset hay datatable từ một nguồn dữ liệu bằng cách sử dụng phương thức Fill(). Còn khi cập nhật dữ liệu ngược trở lại nguồn dữ liệu thì DataAdapter sử dụng phương thức Update.

 Dataset: Là bản sao thu nhỏ của CSDL trong bộ nhớ với nhiều bảng (DataTable) và nhiều quan hệ (DataRelation). Người sử dụng có thể thay đổi dữ liệu trong các bảng này và khi muốn cập nhật vào cơ sở dữ liệu thì thi hành phương thức Update của đối tượng DataAdapter. Các bảng(DataTable) trong DataSet có thể do DataAdapter.Fill (Đổ dữ liệu ) vào hoặc cũng có thể là các bảng được tạo thành từ đối tượng DataTable.

ADO.NET là gì các đối tượng các thức hoạt động?

ADO.NET là một bộ các thư viện hướng đối tượng (OOP) cho phép bạn tương tác với dữ liệu nguồn. Thông thường thì dữ liệu nguồn là một cơ sở dữ liệu (database), nhưng nó cũng có thể là file text, exel hoặc XML. Theo những mục tiêu của hướng dẫn này, chúng ta sẽ chỉ xem xét tới cách ADO.NET làm việc với database.

SqlCommand dùng để làm gì?

Đối tượng SqlCommand cho phép bạn truy vấn và gửi lệnh đến một database. Nó có các phương thức sử dụng cho các lệnh khác nhau. Phương thức ExecuteReader() trả về một đối tượng SqlDataReader để hiển thị kết quả của câu truy vấn. Cho các lệnh insert, update và delete, bạn dùng phương thức ExecuteNonQuery().

Lớp đối tượng SqlConnection dùng để làm gì?

Sử dụng SqlConnection. Mục đích của việc tạo một đối tượng SqlConnection là để các mã lệnh ADO.NET khác có thể làm việc được với database. Các đối tượng ADO.NET khác, như SqlCommand và SqlDataAdapter dùng một connection như một tham số.