Bài giảng Ngôn ngữ lập trình nâng cao - Bài 8 - Lý Anh Tuấn
Giới thiệu chung:
ADO.NET là một cải tiến ADO (Active Data Objects),
được sử dụng để tương tác với CSDL hoặc các nguồn
dữ liệu hỗ trợ bởi .NET
ADO.NET cung cấp rất nhiều component cho tạo các
ứng dụng phân tán, chia sẻ dữ liệu
ADO.NET truy xuất đồng nhất tới các nguồn dữ liệu
khác nhau như SQL Server và XML, và các nguồn dữ
liệu qua OLE DB và ODBC
Box.Show(commSQL.ExecuteScalar( ).ToString);
Slide 11 of 21Ver. 1.0
Object-Oriented Programming Using C#
Đối tượng Command với các Stored Procedure
Tạo một đối tượng Command
Thiết lập CommandType là StoredProcedure
Dùng phương thức Add để tạo và thiết lập các biến
(Parameter)
Dùng thuộc tính ParameterDirection để thiết lập
kiểu biến
Gọi phương thức ExecuteReader
Dùng đối tượng DataReader để hiển thị hoặc duyệt
qua các bản ghi và đóng khi kết thúc
Truy cập đầu ra và trả về các biến
Slide 12 of 21Ver. 1.0
Object-Oriented Programming Using C#
Đối tượng DataAdapter
Slide 13 of 21Ver. 1.0
Object-Oriented Programming Using C#
Được sử dụng để trao đổi dữ liệu giữa data source và
đối tượng DataSet
Có thể lấy dữ liệu và insert vào đối tượng DataTable
trong DataSet và cập nhật những thay đổi DataSet trở
lại data source
Có 2 cách tạo đối tượng DataAdapter
− Sử dụng đối tượng Connection tồn tại
− Mở kết nối Connection nếu cần thiết
Dùng phương thức Fill để đặt dự liệu vào DataSet
hoặc DataTable, và dùng phương thức Update để
đồng bộ dữ liệu thay đổi tới data source
Đối tượng DataAdapter
Slide 14 of 21Ver. 1.0
Object-Oriented Programming Using C#
Tạo đối tượng Command cùng với Connection, và khởi gán
thuộc tính SelectComand của đối tượng DataAdapter
private void frmProducts_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Server=TIENPT\\SQL;
Database=Northwind;Uid = sa; Pwd = admin123";
con.Open();
SqlCommand cmd = new SqlCommand("Select * from
Products",con);
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = cmd;
DataSet ds = new DataSet();
adp.Fill(ds);
dgvProducts.DataSource = ds.Tables[0]; //DataGridView
dgvProducts.Refresh();
}
Sử dụng đối tượng Connection tồn tại
Slide 15 of 21Ver. 1.0
Object-Oriented Programming Using C#
Khởi tạo đối tượng DataAdapter đặt vào các tham số là chuỗi
query và đối tượng Connection
Nó sẽ tự kiểm tra Connection, sẽ tự động mở và đóng khi hoàn
thành
private void frmProducts_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Server=TIENPT\
\SQL;Database=Northwind;Uid = sa; Pwd = admin123";
SqlDataAdapter adp = new SqlDataAdapter("Select * from
Products", con);
DataSet ds = new DataSet();
adp.Fill(ds);
dgvProducts.DataSource = ds.Tables[0];//DataGridView
dgvProducts.Refresh();
}
Sử dụng đối tượng Connection tồn tại
Slide 16 of 21Ver. 1.0
Object-Oriented Programming Using C#
Đối tượng DataSet
Tổng quan về dữ liệu không kết nối
Đối tượng DataSet
Cư trú dữ liệu trong DataSet
Sử dụng Relationship trong DataSet
Sử dụng các Constraint
Cập nhật dữ liệu trong DataSet
Cập nhật dữ liệu tại nguồn
Slide 17 of 21Ver. 1.0
Object-Oriented Programming Using C#
Tổng quan về dữ liệu không kết nối
Slide 18 of 21Ver. 1.0
Object-Oriented Programming Using C#
Mỗi công nghệ truy cập dữ liệu đều đã cải thiện khái
niệm không kết nối, nhưng đến ADO.Net mới cung cấp
giải pháp cách đầy đủ.
ADO.Net được thiết kế dùng cho Internet
ADO.Net sử dụng XML truyền tải định dạng dữ liệu.
ADO.Net cung cấp một đối tượng mới cho việc
caching dữ liệu trên máy client. Đối tượng này là
DataSet
Tổng quan về dữ liệu không kết nối
Slide 19 of 21Ver. 1.0
Object-Oriented Programming Using C#
Đối tượng DataSet
Slide 20 of 21Ver. 1.0
Object-Oriented Programming Using C#
Lưu dữ liệu trong DataSet
Lưu dữ liệu trong DataSet từ một RDBMS
SqlDataAdapter adp = new SqlDataAdapter("Select * from
Products", con);
DataSet ds = new DataSet();
adp.Fill(ds, "Products");
Lập trình tạo Dataset
DataSet dsPubs = new DataSet();
DataTable dtAuthor = new DataTable("Author");
dtAuthor.Columns.Add("AuthorID", Type.GetType("System.Int32"));
dsPubs.Tables.Add(dtAuthor);
dgvProducts.DataSource = dsPubs.Tables[0];//DataGridView
dgvProducts.Refresh();
Slide 21 of 21Ver. 1.0
Object-Oriented Programming Using C#
Sử dụng Relationship trong DataSet
Tạo Relationship
DataRelation relPubsTitle = new
DataRelation("PubsTitles",dsPubs.Tables["Publishers"].Columns[
"pub_id"],dsPubs.Tables["Titles"].Columns["pub_id"]);
dsPubs.Relations.Add(relPubsTitle);
Truy cập dữ liệu quan hệ
//Lay ban ghi dau tien trong bang Publishers
DataRow pubRow = dsPubs.Tables["Publishers"].Rows[0];
//Lay cac ban ghi con cua quan he bang Publishers va Titles
DataRow[] titleRows =
pubRow.GetChildRows("PubsTitles");
Slide 22 of 21Ver. 1.0
Object-Oriented Programming Using C#
Cập nhật dữ liệu trong DataSet
Thêm một Row mới
DataRow drNewRow = dsPubs.Tables["Titles"].NewRow();
drNewRow["title"] = "New Book";
drNewRow["type"] = "business";
dsPubs.Tables["Titles"].Rows.Add(drNewRow);
Thay đổi Rows
DataRow drChangeRow = dsPubs.Tables["Titles"].Rows[0];
drChangeRow.BeginEdit();
drChangeRow["title"] = drChangeRow["title"].ToString() + " 1";
drChangeRow.EndEdit();
Xóa dữ liệu
DataRow drDelRow = dsPubs.Tables["Titles"].Rows[0];
dsPubs.Tables["Titles"].Rows.Remove(drDelRow);
Phương thức này chỉ đánh dấu hàng được xoá, gọi
RejectChanges sẽ undo việc xoá
Slide 23 of 21Ver. 1.0
Object-Oriented Programming Using C#
Xác nhận thay đổi dữ liệu
Để cập nhật DataSet, dùng các phương thức thích hợp để chỉnh
sửa bảng, rồi gọi AcceptChanges hoặc RejectChanges cho mỗi
dòng hoặc cho toàn bộ bảng
Bạn có thể kiểm tra trạng thái của hàng qua thuộc tính RowState,
các trạng thái:
Slide 24 of 21Ver. 1.0
Object-Oriented Programming Using C#
Cập nhật dữ liệu tại nguồn
Sau khi update các bảng trong DataSet, chúng ta
muốn cập nhật lên data source thì bạn dùng phương
thức Update của đối tượng DataAdapter, nó liên kết
giữa DataSet và data source
Nó xác định các thay đổi của dữ liệu và thực thi câu
lệnh SQL tương ứng (Insert, Update hoặc Delete).
Slide 25 of 21Ver. 1.0
Object-Oriented Programming Using C#
Cập nhật dữ liệu tại nguồn
Chỉ rõ các tham số cập nhật
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Insert into titles(title_id, title, type)
values(@t_id,@title,@type)";
cmd.Parameters.Add("@t_id",SqlDbType.VarChar,6,"title_id");
cmd.Parameters.Add("@title",SqlDbType.VarChar,80,"title");
cmd.Parameters.Add("@type",SqlDbType.Char,12,"type");
adp.InsertCommand = cmd;
adp.Update(dsPubs, "titles");
Tự động phát sinh update
SqlCommandBuilder sqlCommBuild = new
SqlCommandBuilder(adp);
adp.Update(dsPubs,"titles");
MessageBox.Show(sqlCommBuild.GetInsertCommand().ToString());
Slide 26 of 21Ver. 1.0
Object-Oriented Programming Using C#
Thiết lập nhanh Data Source cho project
Xây dựng form hiển thị và thao tác dữ liệu
Thông qua thao tác kéo thả từ Data Source
Sử dụng chức năng Wizard
Slide 27 of 21Ver. 1.0
Object-Oriented Programming Using C#
Tạo một ứng dụng Windows Application.
Trong menu Data | Add New Data Source
Sử dụng chức năng Wizard
Slide 28 of 21Ver. 1.0
Object-Oriented Programming Using C#
Tạo New Connection
Sử dụng chức năng Wizard
Slide 29 of 21Ver. 1.0
Object-Oriented Programming Using C#
Hoàn tất khai báo Data Source
Sử dụng chức năng Wizard
Chuỗi kết nối
Slide 30 of 21Ver. 1.0
Object-Oriented Programming Using C#
Lưu chuỗi kết nối trong file cấu hình
Sử dụng chức năng Wizard
Tên của chuỗi kết nối
Slide 31 of 21Ver. 1.0
Object-Oriented Programming Using C#
Chọn bảng dữ liệu
Sử dụng chức năng Wizard
Bảng SinhVien
và các trường
Tên của DataSet
Slide 32 of 21Ver. 1.0
Object-Oriented Programming Using C#
Wizard sẽ tạo ứng dụng với Data Source
Sử dụng chức năng Wizard
Form in Design View
Data Source Windows
Slide 33 of 21Ver. 1.0
Object-Oriented Programming Using C#
Kéo thả binding control vào Form
− Trong cửa sổ Data Source
− Chọn bảng cần sử dụng
− Thiết lập view là DataGridView hay Details
− Kích chọn vào dấu mũi tên xuống sau tên bảng
Sử dụng chức năng Wizard
Slide 34 of 21Ver. 1.0
Object-Oriented Programming Using C#
Kéo Table thả vào Form
− Tự động tạo các binding control cho tableKéo thả binding
control vào Form
Sử dụng chức năng Wizard
Detail
Slide 35 of 21Ver. 1.0
Object-Oriented Programming Using C#
Bổ sung DataGridView cho Form
− Thay đổi Table sang DataGrid
− Kéo Table trong Data Source thả vào Form
Sử dụng chức năng Wizard
DataGridView
Slide 36 of 21Ver. 1.0
Object-Oriented Programming Using C#
Kết quả ứng dụng
Sử dụng chức năng Wizard
Chưa viết code!
Slide 37 of 21Ver. 1.0
Object-Oriented Programming Using C#
Thiết kế DataSet
Tùy chỉnh form dữ liệu
Gắn dữ liệu trong WinForms
Gắn dữ liệu trong WebForms
Thiết kế và gắn kết dữ liệu
Slide 38 of 21Ver. 1.0
Object-Oriented Programming Using C#
Tên kết nối
Kiểu truy vấn
− Câu lệnh SQL
− Hoặc Stored Procedure mới
− Hoặc Stored Procedure đã tồn tại
Các chi tiết lựa chọn câu truy vấn
Tùy chỉnh cấu hình DataAdapter
Slide 39 of 21Ver. 1.0
Object-Oriented Programming Using C#
Cách gắn đơn giản
SqlConnection con = new
SqlConnection("Server=TIENPT\\SQL;Database=Northwind;Uid = sa; Pwd =
admin123");
SqlDataAdapter adp = new SqlDataAdapter("Select * from Products", con);
DataSet ds = new DataSet();
adp.Fill(ds,"Products");
txtProduct.DataBindings.Add("Text", ds.Tables[0], "ProductName");
Cách gắn phức tạp
SqlConnection con = new
SqlConnection("Server=TIENPT\\SQL;Database=Northwind;Uid = sa; Pwd =
admin123");
SqlDataAdapter adp = new SqlDataAdapter("Select * from Products", con);
DataSet ds = new DataSet();
adp.Fill(ds,"Products");
dgvProducts.DataSource = ds.Tables[0];//DataGridView
dgvProducts.Refresh();
Gắn dữ liệu trong WinForms
Slide 40 of 21Ver. 1.0
Object-Oriented Programming Using C#
Gắn dữ liệu chỉ đọc
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("Server=TIENPT\
\SQL;Database=NorthWind;Uid=sa;Pwd=admin123");
conn.Open();
SqlCommand cmd = new SqlCommand("Select * from Products", conn);
SqlDataReader dr = cmd.ExecuteReader();
grvProducts.DataSource = dr;
grvProducts.DataBind();
}
Gắn dữ liệu trong WebForms
File đính kèm:
bai_giang_ngon_ngu_lap_trinh_nang_cao_bai_8_ly_anh_tuan.pdf

