Bài giảng Công nghệ Web - Bài 11: DataAccess (02) - Lê Quang Lợi
Bạn đang xem tài liệu "Bài giảng Công nghệ Web - Bài 11: DataAccess (02) - Lê Quang Lợi", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_cong_nghe_web_bai_11_dataaccess_02_le_quang_loi.pdf
Nội dung text: Bài giảng Công nghệ Web - Bài 11: DataAccess (02) - Lê Quang Lợi
- Bài 11: DataAccess (02) Lê Quang Lợi Email: loilequang@gmail.com loilq@utehy.edu.vn
- Bài 11: DataAccess (02) » ADO.NET » Stored Procedure ASP.NET » Paging ASP.NET Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11: ADO.NET » Tập các đối tượng hỗ trợ lập trình tương tác CSDL » Các đối tượng: DataSet, DataTable, DataView » Các đối tượng kết nối: SqlConnection, SqlCommand » Kết nối hầu hết CSDL hiện hành » Dùng chung mọi loại CSDL » Thống nhất cách sử dụng, tương tác Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.1 Kiến trúc ADO.NET Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.1 Kiến trúc ADO.NET » ADO.NET hỗ trợ hai chế độ kết nối: . Connection: duy trì kết nối . Connectionless: không duy trì kết » SqlConnection: chứa thông tin và thực hiện kết nối » DataTable, DataView, DataSet: lưu trữ kết quả trả về » SqlDataAdpapter, SqlCommand: thực thi sql Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- a) Duy trì kết nối (Connection) » Kết nối được duy trì trong toàn bộ thời gian giao dịch » Khả năng dữ liệu luôn được cập nhật và mới nhất » Chiếm tài nguyên: bộ nhớ, CPU, ổ đĩa lưu trữ, mạng » Tồn tại khả năng tranh chấp tài nguyên » Không có dữ liệu nếu như bị mất kết nối » Các đối tượng duy trì kết nối: SqlCommand, DataReader, Record Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- b) Không duy trì kết nối(Connectionless) » Dữ liệu được lấy về và tạo bản sao: DataSet, DataTable » Dữ liệu sẵn có cùng với ứng dụng: tốn tài nguyên, bùng nổ » Không bị mất dữ liệu khi mất kết nối » Không tốn tài nguyên ở phía máy chứa Database » Dữ liệu là bản sao có thể thay đổi cập nhật theo bó (bath) » Dữ liệu là dữ liệu lịch sử trên Database » Thao tác dữ liệu nhanh và thuận tiện » Tồn tại khả năng tranh chấp tài nguyên » Các đối tượng: DataSet, DataAdapter, Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.1.2 Tương tác CSDL B01: Xây dựng giao diện tương tác dữ liệu B02: Nhận dữ liệu từ giao diện đã thiết kế B03: Tạo kết nối: SqlConnection B3.1: Xây dựng câu truy vấn: SQL/StoredProcedure B3.2: Thực thi câu lệnh/nhận lại kết quả: SqlCommand B04: Hiển thị kết quả ra giao hiện tương ứng Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.1.2 Tương tác CSDL string strCon= ConfigurationSettings.AppSettings*“myConn"+; SqlConnection conn= new SqlConnection(strCon); string sql = "DELETE FROM Publisher WHERE ID = 6"; SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); lblRecords.Text = Convert.ToString(cmd.ExecuteNonQuery()); conn.Close(); Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.1.2 Tương tác CSDL string strConn = ConfigurationSettings.AppSettings[“myStrConn"]; string sql = "SELECT * FROM Publisher"; SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand(sql, conn); DataTable mDT= new DataTable(); SqlDataAdapter mA = new SqlDataAdapter(); mA.SelectCommand = cmd; conn.Open(); mA.Fill(mDT,"Publisher"); conn.Close(); g1.DataSource=mDT; g1.DataBind(); Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.2 Dùng Stored Procedure » Câu lệnh Sql được xây dựng trong CSDL » Sử dụng lại mã SQL, nhiều SQL thực thực thi » Thực thi nhanh (biên dịch một lần) » Xử lý một khối lượng câu lệnh phức tạp phía DataBase » Lập trình xử lý dữ liệu phía CSDL » Triển khai, thay đổi, bảo trì CSDL thuật tiện » Tách biệt giữa lập trình ứng dụng và lập trình CSDL » Bảo mật: tránh injection SQL Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.2 Dùng Stored Procedure string conn= ConfigurationManager.AppSettings["conn"]; SqlConnection scn = new SqlConnection(con); SqlCommand sp = new SqlCommand("CustOrdersDetail", scn); spcmd.CommandType = CommandType.StoredProcedure SqlParameter theID = new SqlParameter("@OrderID", SqlDbType.Int); theID.Value = Convert.ToInt32(this.txt1.Text); spcmd.Parameters.Add(theID); scn.Open(); SqlDataReader dr = spcmd.ExecuteReader(); while (dr.Read()){ listBox2.Items.Add(dr.GetValue(0).ToString()); } dr.Close(); scn.Close(); Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.2 Dùng Stored Procedure CREATE PROCEDURE GetEmployees @LastName nvarchar(50), @FirstName nvarchar(50) AS Begin SET NOCOUNT ON; SELECT FirstName, LastName, Department FROM Employee WHERE FirstName = @FirstName AND LastName = @LastName AND EndDate IS NULL; End Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.2 Dùng Stored Procedure » Tạo kết nối: SqlConnection » Tạo đối tượng: SqlCommand . Tạo CommantType: StoredProcedure . Tạo tạo các SqlPramater: name/ value . Truyền Paramater cho storedProcedure: add() » Thực thi SqlCommnand: ExcuteSQL, ExecuteReader » Nhận giá trị trả về » Hiển thị kết quả nhận được Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.3 Paging trong ASP.NET » Không cần hiển thị toàn bộ mảnh kết quả » Quá trình chia nhỏ kết quả trả về thành nhiều mảnh » Mỗi mảnh có số lượng nhất định » Mỗi lần hiển thị mảnh tương ứng » Đẩy nhanh tốc độc hiển thị dữ liệu » Giảm dung lượng cho đường truyền » Giảm tài nguyên: CPU, Time, Ram » Phân trang: Phía server, phía CSDL Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.3.1 Phân trang phía ASP.NET (server web) » Dùng các đối tượng hỗ trợ sẵn/lập trình phía server » Các control cho phép phân trang: GrideView, ListView » Thuộc tính: EnablePaging= “true” » Dữ liệu được đẩy về toàn bộ phía server » Phân trang xử lý phía server » Tốn thời gian và dung lượng, đường truyền » Server có thể bị quá tải (sập hệ thống) » Không phải là phương pháp tốt Chú ý: tránh hiện tượng bùng nổ tài nguyên/truy cập Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.3.1 Phân trang phía CSDL (server DB) » Dùng StoredProcedure để phân trang » Xửa lý phân trang dựa trên DataBase server » Dữ liệu là mảnh thích hợp lấy được » Tận dụng được tài nguyên đường truyền » Tránh hiện tượng bùng nổ dữ liệu phía Server » Có thể bùng nổ dữ liệu phía Database Server » Khó thực hiện: cho từng câu Sql và lập trình CSDL » Giải pháp tốt cho ứng dụng web Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY
- 11.3.1 Phân trang phía CSDL (server DB) » Đầu vào: . Đối lấy dữ liệu theo tiêu trí . pageIndex » Tạo bảng tạm để chứa dữ liệu . Câu SQL để lấy dữ liệu và sắp xếp » Lấy dữ liệu từ bảng tạm tại vị trí trang cần lấy . Vị trí đầu: PageNum* Pageindex . Ví trị cuối: PageNum*(pageIndex+1) » Trả kết quả về cho storedProcedure Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY