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

pdf40 trang | Chuyên mục: Visual C# | Chia sẻ: yen2110 | Lượt xem: 291 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Ngôn ngữ lập trình nâng cao - Bài 8 - Lý Anh Tuấn, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfbai_giang_ngon_ngu_lap_trinh_nang_cao_bai_8_ly_anh_tuan.pdf