Bài 11 tiếp tục trình bày những kiến thức về Data Access. Trong chương này chúng ta sẽ tập trung tìm hiểu những nội dung như: Kiến trúc ADO.NET, tương tác CSDL, dùng Stored Procedure, paging trong ASP.NET,... Mời các bạn cùng tham khảo.
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 đố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 hành » Dùng chung loại CSDL » Thống 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: trì kết nối Connectionless: khơng trì kết » SqlConnection: chứa thơng tin thực kết nối » DataTable, DataView, DataSet: lưu trữ kết trả » 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 trì tồn thời gian giao dịch » Khả liệu cập nhật » Chiếm tài nguyên: nhớ, CPU, ổ đĩa lưu trữ, mạng » Tồn khả tranh chấp tài ngun » Khơng có liệu bị kết nối » Các đối tượng 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 trì kết nối(Connectionless) » Dữ liệu lấy tạo sao: DataSet, DataTable » Dữ liệu sẵn có với ứng dụng: tốn tài nguyên, bùng nổ » Không bị liệu kết nối » Khơng tốn tài ngun phía máy chứa Database » Dữ liệu thay đổi cập nhật theo bó (bath) » Dữ liệu liệu lịch sử Database » Thao tác liệu nhanh thuận tiện » Tồn khả 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 liệu B02: Nhận 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 giao 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 xây dựng CSDL » Sử dụng lại mã SQL, nhiều SQL thực thực thi » Thực thi nhanh (biên dịch lần) » Xử lý khối lượng câu lệnh phức tạp phía DataBase » Lập trình xử lý liệu phía CSDL » Triển khai, thay đổi, bảo trì CSDL thuật tiện » Tách biệt lập trình ứng dụng 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 SqlPramater: name/ value Truyền Paramater cho storedProcedure: add() » Thực thi SqlCommnand: ExcuteSQL, ExecuteReader … » Nhận giá trị trả » Hiển thị kết nhận Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 11.3 Paging ASP.NET » Không cần hiển thị tồn mảnh kết » Q trình chia nhỏ kết trả thành nhiều mảnh » Mỗi mảnh có số lượng định » Mỗi lần hiển thị mảnh tương ứng » Đẩy nhanh tốc độc hiển thị 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 đố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 đẩy tồn phía server » Phân trang xử lý phía server » Tốn thời gian dung lượng, đường truyền » Server bị tải (sập hệ thống) » Không phải phương pháp tốt Chú ý: tránh 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 DataBase server » Dữ liệu mảnh thích hợp lấy » Tận dụng tài nguyên đường truyền » Tránh tượng bùng nổ liệu phía Server » Có thể bùng nổ liệu phía Database Server » Khó thực hiện: cho câu Sql 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 liệu theo tiêu trí pageIndex » Tạo bảng tạm để chứa liệu Câu SQL để lấy liệu xếp » Lấy liệu từ bảng tạm vị trí trang cần lấy Vị trí đầu: PageNum* Pageindex Ví trị cuối: PageNum*(pageIndex+1) » Trả kết cho storedProcedure Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY ... 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.. .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... 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 đối tượng hỗ trợ sẵn/lập