Công nghệ web - Bài 11: Data access (02)

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

pdf18 trang | Chia sẻ: thuychi16 | Lượt xem: 756 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Công nghệ web - Bài 11: Data access (02), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài 11: DataAccess (02) Lê Quang Lợi Email: loilequang@gmail.com loilq@utehy.edu.vn Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY » ADO.NET » Stored Procedure ASP.NET » Paging ASP.NET Bài 11: DataAccess (02) Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY » 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 11: 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 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 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 11.1.2 Tương tác CSDL Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 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(); 11.1.2 Tương tác CSDL Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 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(); 11.1.2 Tương tác CSDL Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY » 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 11.2 Dùng Stored Procedure Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 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(); 11.2 Dùng Stored Procedure Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 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 11.2 Dùng Stored Procedure Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY » 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 11.2 Dùng Stored Procedure Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY » 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 11.3 Paging trong ASP.NET Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY » 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 11.3.1 Phân trang phía ASP.NET (server web) Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY » 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 11.3.1 Phân trang phía CSDL (server DB) Lê Quang Lợi: loilequang@gmail.com Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY » Đầ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 11.3.1 Phân trang phía CSDL (server DB)
Tài liệu liên quan