Tải bản đầy đủ (.pptx) (41 trang)

Tiểu luận môn lập trình cơ sở dữ liệu DATASET & DATAREADER

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (277.46 KB, 41 trang )

Trường ĐH Công Nghệ Thông Tin
Khoa Hệ Thống Thông Tin
DATASET & DATAREADER
Môn: Lập Trình CSDL
Nhóm: Trương Thanh Danh
Nguyễn Hoàng Dũng
Nguyễn Tấn Huy
DataSet
DataSet là thành phần chính của khiến trúc không kết nối cơ sở dữ liệu. Bản thân nó
được xem như là một Container dùng để chứa các đối tượng DataTable, DataView và
DataRelation.
Đối tượng DataSet được sử dụng cho mọi cơ sở dữ liệu. Điều này có nghĩa là bạn có
thể sử dụng đối tượng này để nắm giữ dữ liệu của cơ sỡ dữ liệu bất kỳ tùy thuộc vào trình
điều khiển cơ sở dữ liệu (.NET Data Provider), ở đây chúng ta đề cập đến SQL Server.
Chúng ta có thể thay đổi dữ liệu bên trong đối tượng này để sau đó cập nhật trở lại cơ sở
dữ liệu nguồn bằng phương thức Update của đối tượng SqlDataAdapter.
1/ Khai báo và khởi tạo:
Đối tượng DataSet thuộc không gian tên System.Data, chính vì vậy khi làm việc với
đối tượng này, bạn cần khai báo sử dụng không gian tên System.Data.
Chúng ta có thể khai báo như sau:
DataSet ds;
Sau khi khai báo đối tượng, để sử dụng được chúng chúng, ta có thể khởi tạo theo các
cách sau:
ds = new DataSet();
hoặc
ds = new DataSet(“Name”);
Lưu ý Khi khởi tạo đối tượng DataSet, nếu không cung cấp tên thì nó sẽ mang tên là
NewDataSet.
Bạn cũng có thể vừa khai báo vừa khởi tạo DataSet như sau:
DataSet ds = new DataSet(“Name”);
DataSet ds = new DataSet();


Hoặc có thể dùng một phương thức có kiểu trả về là một đối tượng DataSet để gán giá
trị cho một đối tượng DataSet mà không cần phải khởi tạo
DataSet ds = getDataSet (“Select * from tblStudent”);
2/ Thuộc tính
2.1/ Thuộc tính DataSetName
Thuộc tính DataSetName Cho Phép gán hay lấy ra tên của đối tượng DataSet hiện
hành.
VD:
Khai báo đoạn chương trình
private void btnShowDataSetName_click (object sender, EventArgs e)`
{
DataSet ds = new DataSet("Day la ten DataSet");
MessageBox.Show("Tên DataSet này là: " + ds.DataSetName);
}
Khi thực thi chương trình khi click vào nút ShowDataSetName ta sẽ có kết quả như sau:
2.2 Thuộc tính Tables
DataSet được mệnh danh là Container chứa danh sách các đối tượng DataTable.
Để truy cập các đối tượng DataTable trong đối tượng DataSet, ta có thể sử dụng thuộc
tính Tables
Thuộc tính Tables trả về tập bao gồm các danh sách các đối tượng DataTable
trong đối tượng DataSet.
Ví dụ:
Ta sử dụng thuộc tính Tables để đưa dữ liệu của Table Student thuộc đối tượng ds vào
DataGridView
private void btnConnect_Click(object sender, EventArgs e)
{
sqlConnection1 = new SqlConnection(connection);
sqlConnection1.Open();
//Tạo dataAdapter
da = new SqlDataAdapter ("Select * from Student", sqlConnection1);

da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
//đưa dữ liệu vào dataset
da.Fill(ds,"Student");
//hiển thị ra dataGridView
dataGridView1.DataSource = ds.Tables["Student"];
}

Kết quả:


Lưu ý:
Thuộc tính Tables trả về DataTale Collection, ta có thể sử dụng một số
phương thức để thêm, xóa đối tượng DataTable Vào đối tượng DataSet và một số
thuộc tính khác như sau:
Phương thức Add:
Cho phép chúng ta thêm một đối tượng DataTable vào đối tượng DataSet.
Chẳng hạn, ta khai báo và khởi tạo đối tượng DataTable, sau đó thêm vào đối
tượng DataSet đang có.
DataSet ds = new DataSet();
DataTable dataTable = new DataTable();
dataSet.Tables.Add(dataTable);
Phương thức Remove và RemoveAt:
Cho phép ta xóa một đối tượng DataTable ra khỏi đối tượng DataSet hay tên đối tượng
DataTable chỉ định:
Ví dụ, ta khái báo và khởi tạo đối tượng DataTable rồi thêm vào đối tượng DataSet
đang có, sau đó khai báo xóa đối tượng DataTable.
DataSet ds = new DataSet():
DataTable dataTable = new DataTable();
ds.Tables.Add(dataTable);
ds.Tables.Remove(dataTable);

hoặc
DataSet ds = new DataSet():
DataTable dataTable = new DataTable(“Student”);
ds.Tables.Add(dataTable);
ds.Tables.Remove(“Student”);
Ngoài ra ta còn có thể loại bỏ đối tượng DataTable trong đối tượng DataSet bằng cách chỉ
định chỉ mục của đối tượng này trong đối tượng DataSet bằng phương thức RemoveAt như
sau:
DataSet ds = new DataSet():
DataTable dataTable = new DataTable(“Student”);
ds.Tables.Add(dataTable);
ds.Tables.RemoveAt(0);
Phương thức Clear:
Cho phép bạn loại bỏ tất cả các đói tượng DataTable tồn tại trong đốitượng
DataSet với cú pháp như sau:

DataSet ds = new DataSet():
DataTable dataTable = new DataTable(“Student”);
ds.Tables.Add(dataTable);
ds.Tables.Clear();
Phương thức CanRemove
Trả về true nếu tham số ứng với đối tượng DataTable đang tồn tại và có thể cho phép loại
bỏ chúng trong đối tượng DataSet, cú pháp:
DataSet ds = new DataSet():
DataTable dataTable = new DataTable(“Student”);
ds.Tables.Add(dataTable);
if (ds.Tables.CanRemove(dataTable))
ds.Table.Remove(“Student”);
Phương thức Contains:
Cho phép bạn kiểm tra đối tượng DataTable có tồn tại

trong đối tượng DataSet hay không bằng cú pháp như
sau:
DataSet ds = new DataSet();
if(!ds.Tables.Contains(Student))
{
DataTable dataTable = new DataTable(“Student”);
ds.Tables.Add(dataTable);
}
Thuộc tính Count:
Trả về số đối tượng DataTable đang tồn tại trong DataSet, cú pháp
DataSet ds = new DataSet();
if(!ds.Tables.Count==0)
{
DataTable dataTable = new DataTable(“Student”);
ds.Tables.Add(dataTable);
}
3/ Phương thức
Ngoài các thuộc tính vừa trình bày ở trên, đối tượng DataSet cung cấp một số phương
thức như : GetChanges, AcceptChanges, RejectChange, Clear, WriteXml, ReadXml và
CreateDataReader
3.1/ Phương thức GetChanges
Phương thức này trả về đối tượng DataSet gồm danh sách các đối tượng DataTable
chứa dựng những mẫu tin có thay đổi hoặc thêm mới.
Khi có nhu cầu về thêm mới, xóa, thay đổi dữ liệu trên đối tượng DataSet và cần cập
nhật lại cơ sở dữ liệu nguồn, bạn có thể sử dụng phương thức này để trích lọc ra danh sách
những đối tượng chứa những mẫu tin đã thay đổi.
Ví dụ:
Sau khi trình bày bảng “Student” trên dataGridView1 ta thêm mới một mẫu tin như
sau:


Và sửa lại mẫu tin có ID là “1”

Sau khi nhấn nút “GetChanges” ta sẽ được kết quả như sau:
Để làm được điều này ta khai báo biến cố click button GetChanges như sau :
private void btnGetChanges_Click(object sender, EventArgs e)
{
DataSet dsChange = new DataSet();
try
{
dsChange = ds.GetChanges();
this.dataGridView2.DataSource = dsChange.Tables[0];
}
catch
{
MessageBox.Show("Xảy lã lỗi vì không có sự thay đổi mẫu tin trong DataSet");
this.dataGridView2.DataSource = null;
}
}
Chúng ta có thể sử dụng phương thức GetChanges để tạo ra một đối tương DataSet mới chứa các mẩu tin bị thay
đổi, sau đó chúng ta dùng đối tượng DataSet này để cập nhật lại CSDL:
private void btnAcceptChanges_Click(object sender, EventArgs e)
{
// Sử dụng phương thức GetChanges để lấy dữ liệu cần update
DataSet dsChange = new DataSet();
try
{
SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(da);
dsChange = ds.GetChanges();
// update dữ liệu xuông CSDL bên dưới
da.Update(dsChange, dsChange.Tables[0].TableName);

}
catch (ExcepJon ex)
{
MessageBox.Show("Errors: " + ex.Message);
}
}
3.2/ Phương thức AcceptChanges và RejectChanges
Để chấp nhận sự hay từ chối sự thay đổi dữ liệu do người dùng thực hiện
bạn có thể gọi phương thức AcceptChanges hay RejectChanges.
Gọi phương thức AcceptChanges:
private void btnAcceptChanges_Click(object sender, EventArgs e)
{
ds.AcceptChanges();
}
Gọi phương thức RejectChanges:
private void btnRejectChanges_Click(object sender, EventArgs e)
{
ds.RejectChanges();
}
Lưu ý, sau khi nhấn nút AcceptChanges hoặc nút RejectChanges và nhấn
nút GetChanges thì những mẫu Jn trình bày trong điều khiển
DataGridView thứ hai sẽ biến mất.
3.3/ Phương thức Clear:
Xóa tất cả các đối tượng DataTable, DataRelation trong đối tượng DataSet.
Gọi phương thức Clear:
private void btnClear_Click(object sender, EventArgs e)
{
ds.Clear();
}

×