View
5
Download
0
Category
Preview:
Citation preview
1
Chương I
ASPNET Framework –Bảo trì trạng thái ứng dụng
22/10/2012 1
Mục tiêu• Học xong chương này sinh viên có thể:
– Hiểu khái niệm ASP.NET và .NET Framework.– Biết sử dụng môi trường phát triển ứng dụng
Web Visual Studio .Net.– Hiểu ý nghĩa và cách bảo trì trạng thái ứng
dụng– Tạo được ứng dụng Web, lưu giữ và sử dụng
trạng thái của các đối tượng trong ứng dụng bằng Cookies, Session và Profile
22/10/2012 2
2
Nội dung• ASP.NET và .NET Framework • Các điều khiển ASP.NET • Trang ASP.NET • Giới thiệu trạng thái ứng dụng• Sử dụng Cookies • Sử dụng Session • Sử dụng Profile
Bài 1. ASP.NET và .NET Framework
• Giới thiệu• Thư viện lớp trong .Net Framework• Môi trường thực thi ngôn ngữ chung
3
Giới thiệu• ASP.NET là công nghệ nền tảng để xây
dựng ứng dụng web và dịch vụ web của Microsoft.
• ASP.NET không phải là công nghệ xây dựng ứng dụng web duy nhất.
• ASP.NET được tích hợp chặt chẽ với hệ thống phần mềm của Microsoft, từ hệ điều hành, web server… đến công cụ lập trình, truy cập dữ liệu, bảo mật...
22/10/2012 5
Định nghĩa ASP.NET• ASP.NET là một phần của .NET Framework
và bao gồm một số thành phần sau: – Công cụ phát triển ứng dụng web Visual Studio
.NET– Không gian tên System.Web.– Các điều khiển Server and HTML.
22/10/20126
4
Ưu điểm của ASP.NET • Phần thực thi của ứng dụng web được biên
dịch, do đó ứng dụng sẽ chạy nhanh hơn các ngôn ngữ thông dịch khác
• Ứng dụng có thể được cập nhật liên tục mà không cần khởi động lại web server
• Khả năng sử dụng .NET Framework là phần mở rộng của Windows API
• Khả năng sử dụng cácngôn ngữ phổ biến Visual Basic và ngôn ngữ mới Visual C#
• Khả năng sử dụng các điều khiển server để xây dựng giao diện giống như các ứng dụng Windows
22/10/2012 7
Ưu điểm của ASP.NET (tt)• Khả năng tạo ra các điều khiển server mới• Sử dụng cơ chế bảo mật có sẵn của hệ điều
hành Windows• Khả năng truy cập dữ liệu bằng ADO.NET• Khả năng hỗ trợ đầy đủ Extensible Markup
Language (XML), cascading style sheets (CSS), và các chuẩn Internet khác
• Các tính năng caching trang web, bản địa hóa nội dung được tích hợp sẵn
22/10/2012 8
5
Các thành phần củaứng dụng web
• Ứng dụng web gồm 3 phần chính:–Phần nội dung:
• Web form, trang HTML, hình ảnh, âm thanh…
–Phần xử lý:• Các tập tin thực thi, các đoạn script
–Phần thông tin cấu hình:• Các tập tin cấu hình, tập tin CSS, cấu
hình web server
22/10/2012 9
Giới thiệu .NET Framework • .NET Framework là nền tảng lập trình mới
của Microsoft để phát triển các ứng dụng windows cũng như ứng dụng web
• .NET Framework gồm 2 phần chính:– Thư viện các lớp cung cấp các hàm lập trình
cấp thấp (tương tự Windows API) cũng như cấp cao để phát triển ứng dụng web (ASP.NET), truy cập dữ liệu (ADO.NET), bảo mật…
– Phần lõi thực thi gọi là common language runtime (CLR)
22/10/2012 10
6
Cách thực thi một ứng dụng .NET
22/10/2012 11
Thư viện lớp của .NET• Thư viện lớp của .NET cung cấp khả năng
sử dụng các tính năng của CLR. • Thư viện lớp của.NET được tổ chức theo
không gian lớp. • Mỗi không gian lớp chứa các lớp có tính
năng liên quan với nhau
22/10/2012 12
7
Một số không gian tên của .NET• Namespace: Là tên gọi một nhóm các lớp đối tượng phục vụ cho một mục đích nào đó
• Ví dụ:– System – System.Data– System.Web– System.Web.UI.WebControls– System.Web.UI.WebControls.WebParts– …
22/10/2012 13
Một số không gian tên trong ứng dụng Web
• System.Web:– Gồm các đối tượng Application, Browser,
Cache, Cookies, Exeception, Request, Response, Server và Trace.
– Sử dụng các lớp này trong hầu hết các tác vụlập trình Web. Các đối tượng Application địnhnghĩa trong Global.asax được dựa trên lớpApplication
• .
14GV.
8
Một số không gian tên trong ứng dụng Web (tt)
• System.Web.SessionState– Đối tượng Session. – Sử dụng các lớp này để lưu trữ và khôi phục
các thông tin trạng thái chứa trong Session.• System.Web.Services
– Đối tượng WebService. – Sử dụng lớp này để tạo và sử dụng dịch vụ
Web.
15GV.
Một số không gian tên trong ứng dụng Web (tt)
• System.Web.UI– Đối tượng Page và Control. – Sử dụng các lớp này trong một Web form để
tạo và điều khiển giao diện người dùng. Web forms được dựa trên lớp Page
• System.Web.UI.WebControls– Tất cả các đối tượng server control. – Sử dụng các lớp này trong các Web form.
16GV.
9
Một số không gian tên trong ứng dụng Web (tt)
• System.Web.UI.HTMLControls– Tất cả các đối tượng HTML control. – Sử dụng các lớp này trong Web forms.
• System.Web.Caching– Đối tượng Cache. – Sử dụng các lớp này để điều khiển quá trình
caching trên server để cải thiện tốc độ thực thi ứng dụng
17GV.
Một số không gian tên trong ứng dụng Web (tt)
• System.Web.Mail– Đối tượng MailMessage, MailAttachment, và đối
tượng SmtpMail. – Sử dụng các lớp này để gửi các thông điệp mail
từ ứng dụng web.• System.Web.Security
– Các đối tượng và modun Authentication. – Sử dụng các lớp này để xác nhận người dùng
và cung cấp các cơ chế bảo mật trong ứng dụng web.
18GV.
10
Assembly• Là các file dll trên đĩa cứng, lưu trữ các lớp
của .NET– Ví dụ: tất cả các lớp trong .ASP.NET Framework đều nằm trong Assembly System.web.dll.
• Trước khi sử dụng các lớp trong dll, cần tạo một tham chiếu đến file dll này – Right click lên thư mục Website trong cửa sổ
Solution Explorer, chọn Add Reference…
Môi trường thực thi ngôn ngữ chung• Commom Language Runtime (CLR): chịu
trách nhiệm thực thi mã nguồn ứng dụng: mã nguồn của ứng dụng .NET được biên dịch thành ngôn ngữ đặc tả của Microsoft (Microsoft intermediate language - MSIL) và chứa trong tập tin gọi là assembly.
• Khi chạy ứng dụng, MSIL sẽ được biên dịch sang mã máy máy bởi JITTER (just in time compiler)
• Trong quá trình thực thi, CLR sẽ tự động thực hiện các tác vụ quản lý bộ nhớ, kiểm tra kiểu dữ liệu, và một số tác vụ khác cho ứng dụng
11
Bài 2. Các điều khiển ASP.NET• Giới thiệu • Các điều khiển server • Các biến cố của các điều khiển • View State
Giới thiệu về các điều khiển ASP.NET
• Là phần quan trọng nhất trong ASP.NET Framework.
• Mỗi điều khiển ASP.NET là một lớp, khi thực thi trên server sẽ được trả về dạng mã HTML hiển thị nội dung trên trình duyệt.
• ASP.NET cung cấp rất nhiều điều khiển có thể sử dụng trong xây dựng ứng dụng web và tổ chức thành các nhóm dựa vào chức năng và bản chất của điều khiển
12
Các điều khiển server• Standard control: bao gồm các điều khiển
chuẩn như: Label, Button, TextBox…• Validator Control: là các điều khiển được sử
dụng đề kiểm tra tính hợp lệ của dữ liệu nhập trước khi gởi về server
• Rich Control: là những điều khiển như FileUpload, Calendar…
• Data Control là các điều khiển cho phép thao tác với cơ sở dữ liệu
Các điều khiển server (tt)• Navigation Control: là những điều khiển cho
phép di chuyển giữa các trang trong website.• Login control: Là các điều khiển về bảo mật ứng dụng cho phép tạo các form đăng ký, đăng nhập, thay đổi mật khẩu…
• HTML Control: cho phép chuyển các điều khiển HTML thành các điều khiển có thể thực thi trên server.
13
Các điều khiển server (tt)
View State• View state của Web form là dữ liệu đươc ASP.NET
bảo toàn giữa các yêu cầu của trình duyệt• ASP.NET lưu trữ các thông tin được đưa vào thuộc
tính ViewState của trang dưới dạng các field ẩn trên trang .
• View state chỉ sử dụng được cho từng web form• View State lưu trữ dữ liệu ngay trên trang à chỉ có
một số kiểu đối tượng có thể được lưu. • Muốn lưu trữ các đối tượng phức tạp hơn trong
ViewState à chuyển đổi chúng thành các chuỗi.
14
View State (tt)• ASP.NET mã hóa các dữ liệu nhập vào các điều khiển thành các field ẩn được lưu trữ trên trang. Nếu ta chọn View Source từ trình duyệt, đoạn mã HTML của trường ẩn có đoạn code sau:
27GV.
View State (tt)• Ví dụ
–Đoạn mã sau cho phép thêm văn bản nhập từ một text box vào các ô của một bảng trên trang Web. • Lưu trữ các chuỗi trong hàm Button1_Click• Tạo ra các ô và dòng trong bảng từ các chuỗi
này, như trình bày trong thủ tục Page_PreRender
15
View State (tt)
29GV.
Bài 3. Trang ASP.NET• Tạo ứng dụng web trong môi trường VS.Net• Biên dịch động• Trang code-behind• Biến cố mức trang• Thuộc tính Page.IsPosBack
16
Tạo ứng dụng web • Khởi động VisualStudio 2008• File, New, Web Site
22/10/2012 31
Tạo ứng dụng web
22/10/2012 32
17
Thêm Trang ASP.NET Vào Web Site
22/10/2012 33
Thêm Trang ASP.NET Vào Web Site
22/10/2012 34
18
Chọn trang web làm trangmặc định
22/10/2012 35
Biên dịch
22/10/2012 36
19
Chạy thử trang web
22/10/2012 37
Trang code-behind• Khi một website được tạo, mặc định ứng
dụng sẽ tạo ra một tập tin Default.aspx và một tập tin Default.aspx.cs– Tập tin Default.aspx: cho phép thiết kế các thành
phần giao diện trên Web Form– Tập tin Default.aspx.cs: là một class kết hợp với
tập tin Default.aspx, cho phép viết code một cách độc lập tương tự như ứng dụng Windows Form, thay vì phải viết code trong thẻ <script runat=”sever”/> </script>
20
Chỉ dẫn của tập tin aspx
22/10/2012 39
Chỉ dẫn của tập tin aspx
22/10/2012 40
21
Chỉ dẫn của tập tin aspx• Cú pháp:
– <%@ [Directive] [Attribute = Value] %>• Một số chỉ dẫn thường sử dụng
– @Page: chỉ định các ứng xử của trang• CodeFile• Inherits• EnableSessionState• EnableViewState• ErrorPage: url đến trang web khác khi xảy ra lỗi• ValidateRequest: cho phép nhập các giá trị đặc
biệt– @Import: chỉ định không gian tên cần import
vào trang web22/10/2012 41
Các sự kiện trong ứng dụng web• Tập tin ứng dụng Global.asax• Sự kiện mức ứng dụng• Sự kiện mức phiên làm việc• Sự kiện mức trang• Sự kiện các điều khiển server
22
Tập tin ứng dụng Global.asax • Thêm vào ứng dụng tập tin Global.asax
– Từ menu Website, chọn Add New Item, Global Application Class
– Tên mặc định của tập tin: Global.asax• Tập tin Global.asax dùng để:
– Khai báo và khởi tạo giá trị cho các biến Application, Session.
– Viết xử lý cho các sự kiện của 2 đối tượng Application và Session.
43GV.
Sự kiện mức ứng dụng• Sử dụng sự kiện mức ứng dụng để khởi tạo
các đối tượng chung cho tất cả người dùng của ứng dụng web.– Application_Start: Chỉ xảy ra một lần đầu tiên
khi bất kỳ trang nào trong ứng dụng được gọi.– Application_End: Xảy ra khi dừng hoạt động
của WebServer.– Application_Error: Xảy ra khi có lỗi phát sinh
trong quá trình thực thi.– Application_BeginRequest: xảy ra mỗi khi trình
duyệt di chuyển đến một trang của ứng dụng– Application_EndRequest – Kết thúc xử lý yêu
cầu của trình duyệt44GV.
23
Sự kiện mức phiên làm việc• Sử dụng sự kiện mức phiên làm việc để
khởi tạo các đối tượng được sử dụng chung trong phạm vi một phiên làm việc.– Session_Start: Xảy ra khi có một người dùng
mới yêu cầu đến bất kỳ trang aspx của ứng dụng, một SessionID sẽ được tạo ra và được sử dụng để quản lý người dùng trong quá trình làm việc với ứng dụng.
– Session_End: Xảy ra khi phiên làm việc không có gởi yêu cầu hoặc làm tươi trang aspx của ứng dụng web trong một khoảng thời gian (mặc định là 20 phút).
45GV.
Sự kiện mức trang1. PreInit2. Init3. InitComplete4. PreLoad5. Load6. LoadComplete7. PreRender8. PreRenderComplete9. SaveStateComplete10. Unload
24
Sự kiện mức trang (tt)• Page_Init: Khởi tạo trang: các điều khiển được khởi tạo và gán giá trị từ view state
• Page_Load: Nạp trang: các điều khiển đã được khởi tạo, gán giá trị và sẵn sàng để sử dụng trong mã lệnh
• Page_PreRender: xảy ra khi trang Web chuẩn bị được trả về cho Client.
47GV.
Sự kiện mức trang (tt)• Page_Unload: Gỡ trang: web form sắp bị
hủy• Page_Disposed: Hủy trang: web form đã bị
hủy.• Page_Error: Trang bị lỗi: có lỗi chưa được
xử lý xảy ra
48GV.
25
Sự kiện mức trang• Các sự kiện chính thường được sử dụng
của web form là Page_Load và Page_Error• Có thể kết hợp thuộc tính IsPostBack với sự
kiện Page_Load để khởi tạo các đối tượng cho web form trong lần đầu tiên (tương tự như Session_Start nhưng ở mức trang)
49GV.
Thuộc tính IsPostBack• Là thuộc tính chỉ đọc của lớp Page, kiểu
luận lý• Cho biết trạng thái của trang web khi được
load: Load lần đầu -> IsPostBack = false• Ví dụ:
private void Page_Load(object sender,System.EventArgs e) {
if( ! IsPostBack) { // init …
} }
50GV.
26
Sự kiện các điều khiển Server• Các điều khiển Server, như Button, TextBox,
DropDownList … có các sự kiện riêng của mình, các sự kiện này xảy ra trong quá trình tương tác với người dùng (tương tự trong windows form).
• Có 3 loại sự kiện điều khiển server: – Sự kiện post-back:
• Làm trang web được gửi về server xử lý ngay lập tức. • Ảnh hưởng đến tốc độ xử lý.
– Sự kiện cached• Được lưu lại trong view state và sẽ được xử lý khi có một sự
kiện post-back.– Sự kiện kiểm chứng.
• Được xử lý ngay tại phía client mà không cần post-back. Chủ yếu sử dụng bới các điều khiển kiểm chứng dữ liệu
51GV.
Sự kiện các điều khiển Server (tt)• Các điều khiển Button, Link Button, và
Image Button tạo ra các sự kiện post-back.
• Các điều khiển TextBox, DropDownList, ListBox, RadioButton, và CheckBox tạo ra các sự kiện cached.
• Tuy nhiên, ta có thể thay đổi điều này bằng cách thay đổi thuộc tính AutoPostBack của các điều khiển.
52GV.
27
Trình tự xử lý sự kiện các điều khiển Server
53GV.
Bài 4. Các trạng thái ứng dụng• Vòng đời của ứng dụng web• Vòng đời của webform• Các mức trạng thái của ứng dụng
– Query String– Cookie– Session– Profile
28
Vòng đời của ứng dụng web• Khi người dùng đóng trình duyệt hoặc
chuyển sang một web site khác, session của người dùng kết thúc.
• Nếu không tồn tại session của người dùng nào, ứng dụng web sẽ kết thúc.
• Lưu ý: Điều này không xảy ra tức thời do cơ chế quản lý bộ nhớ của ASP.NET. Do đó không thể nói chính xác khi nào sự kiện Application_End xảy ra
55GV.
Vòng đời của ứng dụng web (tt)
56GV.
29
Vòng đời của webform• Khi người dùng yêu cầu một trang web, trình
duyệt hiển thị mã HTML nhận được, người dùng có thể tương tác với các điều khiển như gõ vào textbox, lựa chọn trong listbox,… cho đến khi thực hiện tác vụ làm phát sinh sự kiện post-back (nhấn vào button,…)
• Sự kiện post-back khiến trình duyệt gửi lại dữ liệu của trang (dưới dạng view state) về cho server.
Vòng đời của webform (tt)• Sau khi nhận được view state, server sẽ khởi
tạo phiên bản mới của web form, đổ dữ liệu từ view state vào web form, sau đó thực hiện việc xử lý các sự kiện đã phát sinh.
• Sau khi xử lý xong, server sẽ trả kết quả lại cho trình duyệt dưới dạng HTML và hủy phiên bản vừa tạo ra của web form.
30
Vòng đời của webform (tt)
Cách bảo toàn dữ liệu trên Webform
• Web forms được tạo ra và được huỷ tại mỗi thời điểm mà trình duyệt trên máy khách tạo ra một yêu cầu
• Do đó, các giá trị biến bên trong Web form không giữ lại giá trị của chúng sau khi trang Web được hiển thị
• Để giải quyết vấn đề này. ASP.NET cung cấp một số cách thức để giữ lại giá trị các biến giữa các yêu cầu
60GV.
31
Query strings• Chuyển thông tin giữa các yêu cầu và phản
hồi thông qua một phần của địa chỉ Web .• Query strings có thể nhìn thấy được bởi
người sử dụng, vì vậy chúng không nên chứa các thông tin bảo mật như mật khẩu.
• Gửi một query string bằng cách thêm nó vào địa chỉ của phương thức Redirect
61GV.
Query strings (tt)• Gởi query string
62GV.
32
Query strings (tt)• Để nhận thông tin từ query string trong mã
lệnh, sử dụng phương thức QueryString của đối tượng Request
63GV.
Cookies• Lưu trữ các thông tin đơn giản trên máy client• Các máy client có thể không chấp nhận
cookie, do đó cần kiểm tra trước khi sử dụng. • Khi trình duyệt web tạo một Cookie, một nội
dung sẽ được lưu vào header của trang web với nội dung có dạng:Set-Cookie: Message = value
• Phần tiêu đề Set-Cookie này yêu cầu trình duyệt web tạo một Cookie có tên là Message coq giá trị là value.
33
Cookies• Sau khi một Cookie được tạo trên trình
duyệt, mỗi khi trình duyệt yêu cầu một trang web trong ứng dụng, trình duyệt sẽ gửi một header có dạng :Cookie: Message = value
• Tiêu đề Cookie chứa đựng tất cả các Cookie được tạo trên Web Server. Cookie được gửi trở lại mỗi khi một yêu cầu được đưa ra trên trình duyệt web.
Cookies (tt)• Có hai loại cookie:
– Session cookies chỉ tồn tại khi trình duyệt web còn làm việc, và bị hủy khi đóng trình duyệt web
– Persistent Cookies: có thể tồn tại khá lâu. Khi một Persistent Cookies được tạo, nó sẽ được lưu trữ trên một tập tin trên máy tính.
34
Cookies (tt)• Tạo cookie: theo cú pháp
– Response.Cookies[“CookieName"].Value = “value”;
hoặc– HttpCookie cook =
new HttpCokkie (“CookieName”);cook.Value = “value”;
• Kiểm tra xem một trình duyệt có cho phép cookies hay không:– if ( Request.Browser.Cookies) { //do…}
Cookies (tt)
68GV.
35
Cookies (tt)• Lấy giá trị từ cookies
– Response.Cookies[“CookieName"].Value
69GV.
Cookies (tt)• Cookies đa trị
– Có thể lưu trữ nhiều giá trị trong một cookie bằng cách sử dụng bộ [Name] [Value] được gọi là khóa.
– Để tạo một Persistent Cookies, ta chỉ định thời hạn kết thúc cho Cookies:aCookie.Expires = DateTime.Now.AddDays(2);
– Ví dụ: Thay vì tạo ra hai tập tin cookie riêng biệt có tên là userName và lastVisit,ta có thể tạo ra một cookie đơn đặt tên UserInfo và có hai giá trị là userName, lastVisit.
70GV.
36
Cookies (tt)• Cookies đa trị (tt)
71GV.
Cookies (tt)
• Xóa Cookies:
72GV.
37
Application, Session state• Application state
– Lưu trữ các thông tin chung cho tất cả các người sử dụng
• Session state – Lưu trữ các thông tin riêng biệt cho phiên làm
việc hiện hành (riêng cho một người dùng).– Session cho phép lưu trữ dữ liệu với khối lượng
lớn, điều này không được cho phép khi sử dụng Cookies
Application, Session state (tt)• Các biến trạng thái Application và Session được tạo ra một cách tức thời, mà không kiểm tra tên biến hoặc kiểm tra kiểu dữ liệu. Ta nên giới hạn các điểm truy xuất đến các biến này.
• Duy trì trạng thái Session ảnh hưởng đến tốc độ xử lý. Nó có thể được tắt đi ở mức ứng dụng hoặc mức trang
• Ví dụ: sử dụng biến Application và Session để lưu số lượng người truy cập website
74GV.
38
Sử dụng Session• Lưu dữ liệu vào session:
– Cú pháp: Session[“session_name”]=value;– VD: Session[“uname”] = “my name”;
• Lấy dữ liệu từ session:– Kiểm tra sự tồn tại của session – Lấy dữ liệu từ session và chuyển đổi về kiểu dữ
liệu hợp lệ– VD:
if (Session[“uname”]!=null)string username=Session[“uname”].ToString();
Sử dụng Session (tt)• Hủy session:
– Abandon: Kết thúc Session của một người dùng.– Clear: Cho phép xoá toàn bộ dữ liệu trong Session State.– Remove: cho phép xoá từng phần tử trong Session State
• Một số thuộc tính thường dùng của lớp HttpSessionState – SessionID: giá trị nhận dạng session– Timeout: thời gian kết thúc một seesion– cookieless
• AutoDetect: SessionID được lưu trữ trong một cookie khi trình duyệt có cho phép Cookie, ngược lưu trữ vào địa chỉ URL.
• UseCookies: Session ID luôn luôn lưu trữ trong cookie• UseUri: Session ID luôn luôn được thêm vào URL
39
Thiết lập thời gian cho Session• Mặc định, ASP.Net duy trì trạng thái session
là 20 phút, ta có thể thay đổi giá trị này bằng cách cấu hình trong trang web.config – <sessionState mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20“ />
• Để tắt session:– <sessionstate mode="False" …>
Profile• Được dùng để thay thế cho Session hoặc
cookie để lưu trữ thông tin của người sử dụng
• Tạo Profile bằng cách định nghĩa một danh sách các thuộc tính Profile trong ứng dụng ờ trang web.config trong thư mục website
40
Profile (tt)• Một số thuộc tính
– Name: tên của thuộc tính.– Type: kiểu dữ liệu của thuộc tính– Defaultvalue: giá trị mặc định của thuộc tính– ReadOnly: tạo thuộc tính chỉ đọc– allowAnonnyMous: cho phép người dùng nặc
danh đọc và thiết lập thuộc tính– Provider: kết hợp thuộc tính với một Profile
Provider riêng biêt – …
Profile (tt)• Sử dụng Profile
– Lấy dữ liệu từ Profile:txtUserName.Text = Profile.UserName
– Cập nhật dữ liệu vào Profile:Profile.NumberOfVisits++;Profile.UserName = txtUserName.Text;
41
Profile (tt)
Profile (tt)• Tạo nhóm Profile
– Khi cần định nghĩa nhiều thuộc tính của Profile, có thể tạo va quản lý thành các nhóm (groups)
42
Profile (tt)• Sử dụng nhóm Profile
– Truy xuất thông qua group name:Profile.GroupName.Name
Profile (tt)• Tạo Profile phức tạp:
– Có thể tảo Profile để lưu trữ các dữ liệu phức tạp như danh sách, một bảng trong cơ sở dữ liệu
43
Profile (tt)
Profile (tt)
44
Profile (tt)• Lớp ProfileManager
– Được sử dụng để quản lý các profile, tìm kiếm profile, hay xóa các profile không còn sử dụng.
– Lớp ProfileManager cung cấp các phương thức static và các thuộc tính có thể được truy cập bằng cách tham chiếu các đối tượngProfileManager trong mã lệnh.
– Mặc định các user profile bị vô hiệu hóa, để kích hoạt, ta cấu hình trong web.config như sau:<profile enabled="true" />
Profile (tt)• Lớp ProfileManager
– Một số phương thức• DeleteProfile: xóa một profile• GetAllProfiles: trả về tất cả profile trong data source
Ví dụprivate void GetProfiles() {
ProfileGrid.DataSource = ProfileManager.GetAllProfiles(
ProfileAuthenticationOption.All); ProfileGrid.DataBind();
}
GV. Nguyễn Thị Mai Trang
CHƯƠNG IICHƯƠNG II
CCáác đic điềều khiu khiểển chun chuẩẩn vn vààkikiểểm chm chứứngng
2
MMụục tiêuc tiêu• Sau khi học xong chương này, sinh viên có
thể:– Hiểu ý nghĩa, vai trò của các thuộc tính và biến
cố trong các điều khiển chuẩn.– Hiểu ý nghĩa, vai trò của các thuộc tính và biến
cố trong các điều khiển kiểm chứng.– Sử dụng được các điều khiển chuẩn để tạo
giao diện người dùng (nhập, xuất, liên kết, thực thi) cho ứng dụng Web.
– Thực hiện được các kiểm chứng dữ liệu trước khi xử lý chúng.
GV. Nguyễn Thị Mai Trang
3
NNộội dungi dung• Bài 1: Các điều khiển chuẩn• Bài 2: Các điều khiển kiểm chứng dữ liệu
4
BBàài 1: Ci 1: Cáác đic điềều khiu khiểển chun chuẩẩnn• ASP.Net cung cấp nhiều control tạo các
trang web động và tương tác với người sửdụng.
• Các control chấp nhận mô hình lập trình phía server mà người sử dụng ở phía client tương tác với server control để phát sinh các sự kiện sẽ xử lý phía server.
• Khi trang được yêu cầu các server control được biên dịch và thực thi trên server.
GV. Nguyễn Thị Mai Trang
5
SSựự khkháác nhau gic nhau giữữa Server a Server Controls vControls vàà HTML ControlsHTML Controls
• HTML controls không có bất kỳ tương tác nào với server sau khi chúng hiển thị về trên trang.
• Còn Server Controls cho phép truy cập các phương thức, các thuộc tính, các sự kiện tại phía Server.
6
Thêm cThêm cáác server control c server control lên Formlên Form
• Thêm các server control lúc thiết kế hoặc lúc chạy.
• Thêm lúc thiết kế có thể dùng Toolbox hoặc ở chế độ HTML của trang .aspx
• Có thể thêm lúc chạy bằng việc dùng thẻ<Script> trong trang .aspx hoặc file code behind.
GV. Nguyễn Thị Mai Trang
7
DDùùng Toolboxng Toolbox• Toolbox phân loại các control thành các
nhóm thuận tiện cho việc truy cập
8
DDùùng ng ởở chchếế đ độộ hihiểển thn thịị HTML HTML • Có thể thêm server control bằng cách chỉ định code ASP.Net trực tiếp trong chế độhiển thị HTML của file .aspx.<asp:TextBox id = "MyTextBox" runat = "server" Text = "Greetings"></asp:TextBox>
GV. Nguyễn Thị Mai Trang
9
DDùùng trong code behindng trong code behind• ASP.Net cho phép thêm các server control
lúc chạy• Ví dụ: tạo động một textbox:
TextBox tb = new TextBox();tb.ID = "txtUser“;tb.Text = "“;Panel1.Controls.Add(tb)
10
ThiThiếết lt lậập thup thuộộc tc tíính cho nh cho server controlserver control
• Các server control có các thuộc tính thông dụng kế thừa từ lớp cơ sở WebControl.
• Có thể thiết lập thuộc tính lúc thiết kế hoặc khi thực thi.
• Thiết lập thuộc tính của control lúc thiết kếsử dụng cửa sổ Properties
GV. Nguyễn Thị Mai Trang
11
ThiThiếết lt lậập thup thuộộc tc tíính chonh choserver controlserver control
• Có thể thiết lập các thuộc tính của WebControl trực tiếp trong chế độ hiển thịHTML.<asp:TextBox Id = "Text_Box" runat = "server" Enabled =
False></asp:TextBox>
• Thiết lập thuộc tính khi thực thi– Cú pháp : ControlID.PropertyName = Value;
Ví dụ: txtUser.Enabled = True;
12
MMộột st sốố thuthuộộc tc tíính, pnh, phương thhương thứức, c, ssựự kikiệện cn củủa server controlsa server controls
Property/Method/Event Mô tảDataBinding event Phát sinh khi control chuẩn bị
tương tác với DataSourceEnabled property Chấp nhận gt Bool chỉ định khi
nào control được enabledEnableViewState property Giá trị Bool chỉ định control có
duy trì trạng thái khi hiển thịFont property Get hoặc Set Font
ForeColor property Get hoặc Set màu chữ
Height property Get hoặc Set chiều cao control
GV. Nguyễn Thị Mai Trang
13
MMộột st sốố thuthuộộc tc tíính, pnh, phương thhương thứức, c, ssựự kikiệện cn củủa server controlsa server controls
Property/Method/Event Mô tảID property Get hoặc Set nhận biết
controlTabIndex property Get hoặc Set TabIndex
ToolTip property Get hoặc Set ToolTip
Visible property Chỉ định control hiển thị hoặc không hiển thịtrên UI
Width property Get hoặc Set độ rộng
14
CCáác nhc nhóóm đim điềều khiu khiểển chun chuẩẩnn• Điều khiển hiển thị dữ liệu• Điều khiển nhập dữ liệu• Điều khiển gởi trang web đến Server• Điều khiển hiển thị hình ảnh• Điều khiển khác
– Panel– Hyperlink– FileUpload– Calendar
GV. Nguyễn Thị Mai Trang
15
ĐiĐiềều khiu khiểển hin hiểển thn thịị ddữữ liliệệuu• Điều Khiển Label• Điều Khiển Literal
16
LabelLabel• Label thường được sử dụng để hiển thị và
trình bày chuỗi trên trang web. • Nội dung được hiển thị trong label được xác định thông qua thuộc tính Text.
• Thuộc tính Text có thể nhận và hiển thị nội dung với các tag HTML.
• Ví dụ. lbNormal.Text=“normal text”;lbBold.Text =“<b>bold text</b>”;
GV. Nguyễn Thị Mai Trang
17
LiteralLiteral• Điều khiển Literal tương tự như Label, dùng để hiển thị và trình bày chuỗi trên trang web.
• Điểm khác nhau giữ Literal và Label:– Khi kết xuất ra trình duyệt, điều khiển Literal
không tạo ra thẻ HTML, còn Label tạo ra thẻ <span>
– Điều khiển Literal không có các thuộc tính (Properties) định dạng như Label.
18
Label vLabel vàà LiteralLiteral
GV. Nguyễn Thị Mai Trang
19
ĐiĐiềều khiu khiểển nhn nhậập dp dữữ liliệệuu• Điều KhiểnTextBox• Điều khiển CheckBox• Điều khiển RadioButton
20
TextBoxTextBox• TextBox là điều khiển được dùng để nhập
dữ liệu• TextBox thường được sử dụng nhiều với
các ứng dụng trên windows form.• Các thuộc tính quan trọng:
– TextMode:• SingleLine: chứa 1 dòng văn bản• MultiLine: chứa nhiều dòng văn bản• Hiển thị dấu * thay cho các ký tự có trong TextBox.
GV. Nguyễn Thị Mai Trang
21
TextBoxTextBox• Các thuộc tính quan trọng:
– Rows: qui định số dòng văn bản được hiển thị (trường hợp TextMode = MultiLine)
– MaxLength: số ký tự tối đa được nhập vào TextBox (MaxLength = 0: không giới hạn)
– Wrap: cho phép hay không văn bản tự động xuống dòng khi kích thước ngang của của điều khiển không đủ để hiển thị dòng nội dung văn bản, mặc định Wrap = True (tự động xuống dòng)
22
TextBoxTextBox• Các thuộc tính quan trọng:
– AutoPostBack: qui định điều khiển có được phép tự động PostBack về Server khi nội dung trong Textbox bị thay đổi hay không, mặc định AutoPostBack = False (không tự động Postback)
GV. Nguyễn Thị Mai Trang
23
CheckBoxCheckBox• Các thuộc tính:
– Checked: trạng thái của CheckBox (chọn hay không chọn)
– TextAlign: vị trí hiển thị của điều khiển so với chuỗi văn bản.
– AutoPostBack: mặc định là false.
24
CheckBoxCheckBox• Sự kiện:
– CheckedChanged: là sự kiện mặc định, xảy ra khi có thay đổi lựa chọn từ CheckBox. Biến cốnày chỉ xảy ra khi AutoPostBack = true.
GV. Nguyễn Thị Mai Trang
25
RadioButtonRadioButton• Các thuộc tính: (tương tự CheckBox)
– GroupName (RadioButton): Tên nhóm, được sửdụng để nhóm các điều khiển RadioButton lại thành 1 nhóm -> chỉ cho phép người sử dụng chọn một trong các tùy chọn
26
ĐiĐiềều khiu khiểển gn gởởi trang Web đi trang Web đếến n ServerServer
• Là các Submit Button, mỗi khi được nhấn vào sẽ PostBack về Server.
• Điều Khiển Button • Điều Khiển LinkButton • Điều Khiển ImageButton• Biến cố Command.
GV. Nguyễn Thị Mai Trang
27
ButtonButton• Các thuộc tính
AccessKey Chỉ định phím di chuyển tới điều khiển Button.
CommandArgument Chỉ rõ đối số được truyền tới lệnh thực hiện.
CommandName Chỉ định tên một lệnh được truyền tới trong Command Event.
OnClientClick Chỉ định đến một hàm phía client khi nhấn vào Button.
PostBackUrl Url trang khi có PostBack về Server
28
ButtonButton
GV. Nguyễn Thị Mai Trang
29
LinkButton, ImageButtonLinkButton, ImageButton• Tương tự điều khiển Button nhưng kết xuất
trên trình duyệt khác nhau– Button: thẻ <input >– LinkButton: thẻ <a>– ImageButton: thẻ <input type=“image”>
• LinkButton– PostbackUrl: liên kết đến một địa chỉ trang web
• ImageButton: – ImageUrl: liên kết file ảnh hiển thị trên button
30
LinkButton, ImageButtonLinkButton, ImageButton
GV. Nguyễn Thị Mai Trang
31
ĐiĐiềều khiu khiểển hin hiểển thn thịị hhìình nh ảảnhnh• Điều Khiển Image • Điều Khiển ImageMap
32
ĐiĐiềều khiu khiểển Imagen Image• Dùng để hiển thị ảnh giống với thẻ <Img>
trong HTML• Các thuộc tính:
AlternateText Chuỗi thay thế khi lỗi đường dẫn của ảnh
ImageUrl Đường dẫn của ảnh hiển thị
GV. Nguyễn Thị Mai Trang
33
ĐiĐiềều Khiu Khiểển ImageMapn ImageMap• Cho phép tạo ra các liên kết ứng với từng
vùng ảnh trên hình ảnh• Các thuộc tính:
HotSpots Tập hợp các vùng ảnh và liên kết
ImageUrl Đường dẫn của ảnh hiển thị
34
ĐiĐiềều Khiu Khiểển ImageMapn ImageMap• Tạo các vùng ảnh
GV. Nguyễn Thị Mai Trang
35
CCáác đic điềều khiu khiểển khn kháácc• Điều Khiển Panel• Điều Khiển HyperLink• Điều Khiển FileUpload • Điều Khiển Calendar
36
ĐiĐiềều khiu khiểển Paneln Panel• Được sử dụng để chứa các điều khiển
khác.• Các thuộc tính:
BackImageUrl Đường dẫn file ảnh nền
GrouppingText Chuỗi hiển thị trên khung
ScrollBars Thanh cuộn
GV. Nguyễn Thị Mai Trang
37
ĐiĐiềều Khiu Khiểển Hyperlinkn Hyperlink• Được sử dụng để tạo ra các liên kết siêu
văn bản.• Các thuộc tính:
NavigateUrl Đường dẫn cần liên kết đến
Target Kiểu cửa sổ trang liên kết
ImageURL Chỉ định url ảnh hiển thị
Text Chuỗi hiển thị
38
ĐiĐiềều Khiu Khiểển FileUploadn FileUpload• Cho phép người sử dụng chọn tập tin từ
máy client để tải lên server
GV. Nguyễn Thị Mai Trang
39
ĐiĐiềều Khiu Khiểển Calendarn Calendar• Cho phép hiển thị thời gian (ngày, tháng,
năm) với nhiều định dạng khác nhau.• Các thuộc tính:
40
ĐiĐiềều Khiu Khiểển Calendarn Calendar• Các thuộc tính:
– SelectedDate: ngày được chọn trên Calendar• Sự kiện:
– SelectionChanged: sự kiện mặc định, xảy ra khi có sự thay đổi chọn trên Calendar
Ví dụ: Label1.Text =Calendar1.SelectedDate.ToLongDateString();
GV. Nguyễn Thị Mai Trang
41
BBàài 2i 2. . ĐiĐiềều khiu khiểển kin kiểểm chm chứứng dng dữữ liliệệuu
• Giải thích cơ chế kiểm chứng dữ liệu của ASP.NET
• Kiểm chứng dữ liệu được nhập bằng theo một số tiêu chuẩn khác nhau
• Hiển thị thông báo lỗi kiểm chứng dữ liệu• Tạo các tiêu chuẩn kiểm chứng dữ liệu của
riêng mình
42
KhKháái nii niệệm kim kiểểm chm chứứng dng dữữ liliệệuu• Quá trình kiểm chứng kiểm tra tính hợp lệ
của dữ liệu được nhập vào các điều khiển trên web form ở phía client, trước khi trang được gửi về server để xử lý.
• Quá trình kiểm chứng phía client được thực hiện bởi các đoạn mã của thư viện JScript tên là WebUIValidation.js
• Thư viện này được tải về phía client một cách riêng rẽ
GV. Nguyễn Thị Mai Trang
43
KhKháái nii niệệm kim kiểểm chm chứứng dng dữữ liliệệuu• Quá trình kiểm chứng dữ liệu sau đó luôn
luôn được thực hiện ở phía server• Cơ chế này nhằm đảm bảo quá trình kiểm
chứng dữ liệu luôn được thực hiện chính xác (do thư viện JScript có thể không được hỗ trợ đầy đủ bởi các trình duyệt khác)
44
SSửử ddụụng cng cáác đic điềều khiu khiểển KCDLn KCDL1.Vẽ điều khiển kiểm chứng trên web form2.Thiết lập thuộc tính ControlToValidate là điều khiển cần kiểm chứng
3.Thiết lập thuộc tính ErrorMessage thành thông báo lỗi nếu dữ liệu không hợp lệ
4.Thiết lập thuộc tính Text để hiển thị thông báo lỗi ngắn gọn (khi đó thông báo đầy đủlà ErrorMessage sẽ hiển thị trong điều khiển ValidationSummary).
GV. Nguyễn Thị Mai Trang
45
SSửử ddụụng cng cáác đic điềều khiu khiểển KCDLn KCDL5. Đưa điều khiển ValidationSummary để hiển
thị các lỗi kiểm chứng tại một vị trí tập trung.
6. Đưa một điều khiển post-back (như Button) vào web form. Quá trình kiểm chứng dữliệu chỉ xảy ra khi có yêu cầu post-back.
46
Thuộc tính Page.IsValid• Thuộc tính Page.IsValid kiểm tra xem form đã
thỏa các Validation Control hay không.• Trả về true nếu không có lỗi xảy ra, ngược lại
trả về false
GV. Nguyễn Thị Mai Trang
47
Các nhóm kiểm chứng• RequiredFieldValidator: Kiểm tra xem điều
khiển có chứa dữ liệu không• CompareValidator: Kiểm tra xem dữ liệu đưa vào một điều khiển này có phù hợp với dữ liệu đưa vào một điều khiển khác hay không
• RangeValidator: Kiểm tra xem dữ liệu đưa vào có nằm trong khoảng hai giá trị cho trước không
48
Các nhóm kiểm chứng (tt)(tt)• RegularExpressionValidator: Kiểm tra xem
dữ liệu đưa vào có tuân thủ theo định dạng cho trước không
• CustomValidator: Kiểm tra dữ liệu đưa vào theo quy tắc riêng
• ValidationSummary: Hiển thị một cách tập trung các lỗi, thông báo kiểm chứng dữ liệu
GV. Nguyễn Thị Mai Trang
49
Hủy bỏ kiểm chứng• Các bước hủy bỏ kiểm chứng
– Tạo một Button dạng:<asp:Button ID="btnRemove"
CommandName="Delete" runat="server" CausesValidation="false"OnClientClick="javascript:Page_ValidationActive = false;"
/>
50
RequiredFieldValidatorRequiredFieldValidator• Kiểm tra xem điều khiển có chứa dữ liệu
hay không• Các thuộc tính:
ControlToValidate Điều khiển được kiểm tra
ErrorMessage Chuỗi thông báo khi kiểm tra có lỗi (khi điều khiển không chứa dữ liệu)
GV. Nguyễn Thị Mai Trang
51
CompareValidatorCompareValidator• Kiểm tra xem dữ liệu đưa vào một điều
khiển này có phù hợp với dữ liệu đưa vào một điều khiển khác hay không
• Các thuộc tính:ControlToValidate Điều khiển được kiểm tra
ControlToCompare Điều khiển được so sánh với điều khiển được kiểm tra
52
RangeValidatorRangeValidator• Kiểm tra xem dữ liệu đưa vào có nằm trong
khoảng hai giá trị cho trước không• Các thuộc tính:
MinimumValue Giá trị nhỏ nhất trên điều khiển được kiểm chứng
MaximumValue Giá trị lớn nhất trên điều khiển được kiểm chứng
Type Kiểu dữ liệu trên điều khiển được kiểm chứng
GV. Nguyễn Thị Mai Trang
53
RegularExpressionValidatorRegularExpressionValidator• Kiểm tra xem dữ liệu đưa vào có tuân thủ
theo định dạng cho trước không • Thuộc tính ValidatorExpression: quy định
mẫu nhập liệu
54
RegularExpressionValidatorRegularExpressionValidator• [các kí tự] : kí tự nhập phải khớp với một
trong các kí tự giữa [ ]• [^các kí tự]: kí tự nhập phải khác với các kí
tự giữa [ ]• \w: kí tự nhập là kí tự bất kỳ.• \W: kí tự nhập là khoảng trắng [\t\n\r\f\v]• \s: kí tự nhập phải khác khoảng trắng
[^\t\n\r\f\v]• \d: kí tự nhập là kí tự số [0-9]
GV. Nguyễn Thị Mai Trang
55
RegularExpressionValidatorRegularExpressionValidator• \D: kí tự nhập phải khác kí tự số [^0-9]• {n,m}: các mục đứng trước được lặp từ n đến m lần.
• {n,}: các mục đứng trước được lặp >=n lần.• {n}: các mục đứng trước được lặp đúng n
lần• ? : các mục đứng trước được lặp 0 -1 lần • + : các mục đứng trước được lặp 1 lần• * : các mục đứng trước được lặp ít nhất 1
lần
56
RegularExpressionValidatorRegularExpressionValidator• Ví dụ 1: kiểm chứng dd/MM/yy
– ((0[1-9])|([1-2][0-9])|(3[0-1])): ngày từ 01-31– ((0[1-9])|(1[0-2])): tháng từ 1-12– [0-9]{2}: năm
• Ví dụ 2: [0-9]{3}-[0-9]{3}\s[0-9]{4}– [0-9] nhận tất cả các số 0-9– {3} yêu cầu 3 số được nhập cho phần đầu tiên– - là dấu bắt nhập– \s chỉ định một khoảng trắng
GV. Nguyễn Thị Mai Trang
57
CustomValidatorCustomValidator• Thực hiện các kiểm chứng phức tạp không được cung cấp bởi các control kiểm chứng bằng cách sử dụng control CustomValidator và viết các đoạn mã để thực hiện việc kiểm chứng trên server và (có thể có) trên client
• Ví dụ: kiểm tra một số nhập vào có phải làsố nguyên tố hay không– Ở phía server, đoạn mã kiểm chứng nằm trong
hàm sự kiện ServerValidate . Các tham số của hàm này cung cấp khả năng truy cập đến các control cần kiểm chứng.
58
CustomValidatorCustomValidator
GV. Nguyễn Thị Mai Trang
59
CustomValidatorCustomValidator• Ở phía Client, chỉ ra các script kiểm chứng trong
thuộc tính ClientValidationFunction của CustomValidator.
60
ValidationSummaryValidationSummary
• Hiển thị các lỗi kiểm chứng ở một vị tríchung
• Thuộc tính ErrorMessage của các kiểm chứng được hiển thị trong control ValidationSummary
• Thuộc tính Text của các điều khiển kiểm chứng hiển thị trên điều khiển kiểm chứng
GV. Nguyễn Thị Mai Trang
61
Tự tạo điều khiển kiểm chứng • Có thể tạo ra một điều khiển kiểm chứng
bằng cách tạo một lớp dẫn xuất từ lớp cơ sởBaseValidator.
• BaseValidator là lớp cơ sở của tất cả các điều khiển kiểm chứng, đây là lớp abstract, do đó, các lớp dẫn xuất phải thực thi phương thức:– EvaluateIsValid: trả về true nếu kiểm chứng thành
công
62
Tự tạo điều khiển kiểm chứng • Ngoài ra, có thể định nghĩa lại một số phương
thức khác của lớp này như:– GetControlValidationValue: cho phép lấy giá trị
của các control được kiểm chứng• Khi tạo một điều khiển kiểm chứng, ta phải định
nghĩa lại phương thức EvaluateIsValid(), và bên trong phướng thức này, gọi GetControlValidationValue để lấy giá trị từ control được kiểm chứng
• Ví dụ: tạo một LengthValidator Control để kiểm tra độ dài dữ liệu nhập trên một TextBox
GV. Nguyễn Thị Mai Trang
63
Tự tạo điều khiển kiểm chứng (tt)
64
Tự tạo điều khiển kiểm chứng (tt)
ChươngChương 3: 3: NgônNgôn ngngữữ PHPPHP
Mục tiêu
• Sau khi học xong chương này, sinh viên cóthể:– Hiểu và sử dụng đúng các kiểu dữ liệu, toán tử,
các cấu trúc, hàm, mảng – Hiểu cơ chế xử lý form của PHP.– Sử dụng được PHP và HTML để thiết kế các trang
Web
NNộộii dungdung• Giới thiệu.• Cấu trúc và cú pháp.• Hằng và biến.• Các kiểu dữ liệu.• Các toán tử• Cấu trúc lựa chọn.• Cấu trúc lặp• Hàm• Mảng• Truyền biến giữa các trang• Truyền thông tin bằng form
1. 1. GiGiớớii thithiệệuu PHPPHP
• Giới thiệu PHP• Cài đặt• Lập trình PHP
GiGiớớii thithiệệuu PHPPHP
• PHP (Personal Home Page) ra đời năm1994 do phát minh của Rasmus Lerdorf
• PHP bắt đầu được sử dụng trong môitrường chuyên nghiệp và trở thành chữ viếttắt của Hypertext Preprocessor.
• PHP là ngôn ngữ mã nguồn mở, là kịch bảntrình chủ (server script) chạy trên phíaserver (server side).
GiGiớớii thithiệệuu PHPPHP
• Cho phép xây dựng ứng dụng web với cáccơ sở dữ liệu mySQL, Oracle, SQL Server…
• PHP là công nghệ phía server (server-side), không phụ thuộc vào môi trường (cross-platform), có thể sử dụng được trên nhiềuhệ điều hành: Unix, Lunix, Windows…
• Do PHP dễ học, thời gian tạo các trang Web động tương đối ngắn hơn so với các ngônngữ khác nên PHP đã nhanh chóng trởthành một ngôn ngữ lập trình Web phổ biến
CCààii đđặặtt PHPPHP
• Download PHP ở địa chỉ: http://php.net/downloads.php (phiên bản mớinhất là 5.4.7
• Download tài liệu tham khảo : http://www.php.net/docs.php
• Cài đặt cấu hình WebServer và database (IIS, Apache hoặc PhpAdmin,….)
• Hiện nay, các lập trình viên thường sử dụngcác PHP framework để xây dựng ứng dụngweb. (Zend, Prado, CakePHP,…)
CCààii đđặặtt PHPPHP
• Cài đặt cấu hình PHP trên IIS Windows 7:– Giải nén gói PHP, ra một thư mục nào đó (ví dụ
C:\php5) – Đổi tên file php.ini-recommendedthành php.ini– Mở php.ini, thay đổi các thông số sau:
• cgi.force_redirect = 0• cgi.fix_pathinfo = 1• fastcgi.impersonate = 1• extension_dir = "C:\php5\ext“
– Copy file php.ini trên vào thư mục C:\Windows,file php5ts.dll vào thư mục C:\Windows\System32
CCààii đđặặtt PHPPHP
• Cài đặt cấu hình PHP trên IIS:– Vào Control Panel / Programs / Turn Windows
Features on or off, check vào các mục chọn nhưhình
CCààii đđặặtt PHPPHP
• Cài đặt cấu hình PHP trên IIS:– Mở IIS: Control Panel, System and Security,
Administrative Tools hoặc search inetmgr– Click lên thư mục Default Website– Double click lên biểu tượng Handler Mappings– Bên cửa sổ Action, chọn Add Module Mapping…
CCààii đđặặtt PHPPHP
• Cài đặt cấu hình PHP trên IIS (tt)
CCààii đđặặtt PHPPHP
• Cài đặt cấu hình PHP trên IIS (tt)– Nhập các thông số như sau
CCààii đđặặtt PHPPHP
• Cài đặt cấu hình PHP trên IIS (tt)– Tạo thư mục ảo chứa mã nguồn các trang php– Thực thi trang php trên trình duyệt:
• http://localhost/php/bt9.php
CCấấuu trtrúúcc vvàà ccúú phpháápp ccủủaa PHPPHP
• Cấu trúc trang PHP:– Trang PHP là sự phối hợp của các thẻ HTML và
PHP– Lệnh PHP nằm trong cặp thẻ mở <? Và đóng ?>– Ví dụ
CCấấuu trtrúúcc vvàà ccúú phpháápp ccủủaa PHPPHP• Cú pháp PHP tương tự ngôn ngữ C• Một số lưu ý:
– Cuối câu lệnh có dấu ;– Mỗi phương thức đều bắt đầu { và đóng bằng
dấu }– Ghi chú (comment):
• Sử dụng ký hiệu // hoặc # để giải thích cho mỗi câughi chú
• Sử dụng /* và */ cho mỗi đoạn ghi chú
HHằằngng• Khai báo và sử dụng hằng
– Sử dụng phát biểu define để khai báo hằng– Ví dụ: define (“MAX” , 100);
HHằằngng
• Kiểm tra hằng: sử dụng hàm defined đểkiểm tra sự tồn tại của hằng
• Ví dụ:
BiBiếếnn
• Khai báo: sử dụng tiền tố $ trước tên biến. • Khai báo biến không có kiểu dữ liệu• Khai báo biến có phân biệt chữ hoa hay
thường• Nên gán giá trị khởi đầu cho biến lúc khai
báo• Cú pháp: $variablename [=initial value]; • Ví dụ:
BiBiếếnn ((tttt))
• Tầm vực của biến. – Biến khai báo bên ngoài hàm thì sẽ có
tầm vực trong trang PHP– Biến khai báo trong hàm thì chỉ có hiệu
lực trong hàm–Để sử dụng biến toàn cục trong hàm, sử
dụng từ khóa global.
BiBiếếnn ((tttt))
KiKiểểuu ddữữ liliệệuu
• Boolean • Integer• Float• String• Object• Array
KiKiểểuu ddữữ liliệệuu ((tttt))• Thay đổi kiểu dữ liệu
– Ép kiểu (như ngôn ngữ C)– Sử dụng hàm settype– Hàm gettype: trả về kiểu của biến
KiKiểểuu ddữữ liliệệuu ((tttt))
• Kiểm tra kiểu dữ liệu– is_array, is_bool, is_double, is_float,
is_integer, is_long, is_real, is_string, is_object,…
– Các hàm trên trả về true nếu kiểu dữ liệucủa biến được kiểm tra là đúng.
MMộộtt ssốố hhààmm totoáánn hhọọcc
• mixed max ( array $values )mixed max ( mixed $value1,
mixed $value2 [, mixed $value3...] )• mixed min ( array $values )
mixed min ( mixed $value1, mixed $value2 [, mixed $value3...] )
MMộộtt ssốố hhààmm totoáánn hhọọcc ((tttt))
MMộộtt ssốố hhààmm totoáánn hhọọcc ((tttt))
• int count ( mixed $var [, int $mode] )
MMộộtt ssốố hhààmm totoáánn hhọọcc ((tttt))
• number abs ( mixed $number ) • float exp ( float $arg ) • number pow (number $base, number $exp ) • float sqrt ( float $arg ): tính căn bậc 2 • int rand ( [int $min, int $max] )
MMộộtt ssốố hhààmm totoáánn hhọọcc ((tttt))
• float round ( float $val [, int $precision] ) – VD: numberformat.php
• float ceil ( float $value )
• float floor ( float $value )
CCáácc totoáánn ttửử
• Toán tử số học
CCáácc totoáánn ttửử ((tttt))• Toán tử quan hệ
CCáácc totoáánn ttửử ((tttt))
• Toán tử luận lý
CCáácc totoáánn ttửử ((tttt))• Toán tử gán
– ( =, +=, -=, *=, /=, %=, .=)
CCấấuu trtrúúcc llựựaa chchọọnn
• Lệnh if / else– if (expr)
statement – if (expr)
statementelse
statement
CCấấuu trtrúúcc llựựaa chchọọnn ((tttt))
• Lệnh if / else– if (expr)
statement elseif (expr)
statementelse
statement
CCấấuu trtrúúcc llựựaa chchọọnn ((tttt))• Lệnh switch
CCấấuu trtrúúcc llặặpp
• Lệnh forfor (expr1; expr2; expr3) statement
CCấấuu trtrúúcc llặặpp ((tttt))
• Lệnh foreachforeach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
CCấấuu trtrúúcc llặặpp ((tttt))
• Lệnh foreach
CCấấuu trtrúúcc llặặpp ((tttt))
• Lệnh foreach
CCấấuu trtrúúcc llặặpp ((tttt))
• Lệnh foreach
CCấấuu trtrúúcc llặặpp ((tttt))• Lệnh while
– while (expr) statement
CCấấuu trtrúúcc llặặpp ((tttt))
• Lệnh do / whiledo
statementwhile (expr) ;
HHààmm• Qui tắc xây dựng hàm
function FunctionName($arg_1, $arg_2,/* ..., */ $arg_n)
{//statement
}
– Hàm có thể có hoặc không có giá trị trả về– Tên hàm phải khác với các hàm chuẩn– Một hàm có thể định nghĩa trong 1 hàm khác– Hàm trong PHP có tầm vực toàn cục
HHààmm ((tttt))• Ví dụ
HHààmm ((tttt))
• Hàm đệ qui (Recursive functions )
MMảảngng (Array)(Array)• Mảng một chiều
– Khai báo mảng một chiều• $arr [ ] = item1;
$arr [ ] = item2;$arr [ ] = item3;
• $arr [0] = item1;$arr [1] = item2;$arr [2] = item3;
• $arr = array (“item1”, “item2”, “item3”) ;
MMảảngng ((tttt))
• Mảng một chiều– Khai báo mảng một chiều
• $arr [“one”] = “item1”;$arr [“two”] = “item2”;$arr [“three”] = “item3”;
• $arr = array (“one” => “item1”,“two”=> “item2”, “three”=> “item3”) ;
MMảảngng ((tttt))
• Mảng một chiều– Truy xuất các phần tử mảng
• Truy xuất trực tiếp phần tử: echo $arr [1]; // item1• Dùng vòng lặp duyệt mảng
MMảảngng ((tttt))
• Mảng một chiều– Truy xuất các phần tử mảng
• Dùng hàm list() và each()
MMảảngng ((tttt))• Mảng hai chiều
MMảảngng ((tttt))
• Các hàm làm việc với mảng– bool sort ( array &$array [, int $sort_flags] )
• Sắp xếp mảng tăng dần• Sorting type flags:
– SORT_REGULAR - compare items normally (don't change types)
– SORT_NUMERIC - compare items numerically – SORT_STRING - compare items as strings
MMảảngng ((tttt))
MMảảngng ((tttt))
• Các hàm làm việc với mảng– bool rsort ( array &$array [, int $sort_flags] )
• Sắp xếp mảng giảm
MMảảngng ((tttt))
• Các hàm làm việc với mảng– int count ( mixed $var [, int $mode] )
• Trả về số phần tử trong mảng• Tùy chọn mode ( từ phiên bản PHP 4.2.0)
–Mặc định: 0 –COUNT_RECURSIVE (1): Đếm tất cả các
phần tử đệ qui
MMảảngng ((tttt))
MMảảngng ((tttt))• Các hàm làm việc với mảng
– mixed current ( array &$array ) • Trả về phần tử hiện tại ở đầu mảng
– mixed next ( array &$array ) • Trỏ đến phần tử đứng sau phần tử hiện tại
– mixed prev ( array &$array ) • Trỏ đến phần tử trước phần tử hiện tại
MMảảngng ((tttt))
MMảảngng ((tttt))
• Các hàm làm việc với mảng– mixed reset ( array &$array )
• Đặt con trỏ về phần tử đầu tiên của mảng
TruyTruyềềnn bibiếếnn gigiữữaa ccáácc trangtrang
• Sử dụng các biến môi trường $_POST , $HTTP_POST_VARS, $_REQUEST đểtruyền các thông tin của form– Ví dụ: test.php
TruyTruyềềnn bibiếếnn gigiữữaa ccáácc trangtrang ((tttt))• foo.php
TruyTruyềềnn bibiếếnn gigiữữaa ccáácc trangtrang ((tttt))
• Sử dụng query string– Dạng: url ? key1 =value1 & key2 =value2 – Hoặc: url ? key = urlencode(value)– Sử dụng $_GET để lấy giá trị từ query string:
• $value1 = $_GET[‘key1'];• $value2 = $_GET[‘key2'];
TruyTruyềềnn bibiếếnn gigiữữaa ccáácc trangtrang ((tttt))
• Queystring.php
• Querystring_result.php
TruyTruyềềnn bibiếếnn gigiữữaa ccáácc trangtrang ((tttt))
• Sử dụng Session– Cú pháp: $_SESSION[ ‘key’ ] = value; – Lấy giá trị từ session:
• $value = $_SESSION[‘key'];– Khai báo sử dụng session:
• session_start();– Kiểm tra session tồn tại:
if ( isset ($SESSION[‘key’]){}
TruyTruyềềnn bibiếếnn gigiữữaa ccáácc trangtrang ((tttt))
• Session.php
• Session_result.php
TruyTruyềềnn bibiếếnn gigiữữaa ccáácc trangtrang ((tttt))
• Sử dụng Cookkie– Cookie là những thông tin được lưu trên máy
client– Cú pháp:bool setcookie ( string $name [, string $value [,
int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly]]]]]] )
TruyTruyềềnn bibiếếnn gigiữữaa ccáácc trangtrang ((tttt))
• Sử dụng Cookkie
TruyTruyềềnn bibiếếnn gigiữữaa ccáácc trangtrang ((tttt))• Sử dụng Cookkie
Truyền thông tin bằng Form
• Các thành phần Form• Các thành phần khác• Xử lý Form
CCáácc ththàànhnh phphầầnn formform
• Cấu trúc Form– Bắt đầu và kết thúc bởi cặp thẻ
<Form> </Form>• Các thuộc tính:
– action, method, enctype• Các thành phần chính của form:
– textarea, select, input
CCáácc ththàànhnh phphầầnn form (form (tttt))
• Cấu trúc Form– Nằm trong cặp thẻ <Form> </Form>
• Các thuộc tính:– action, method, enctype
• Các thành phần chính của form:– textarea, select, input
CCáácc thuthuộộcc ttíínhnh FormForm• Action :
– action=”URL” hoặc action= “script code” màform sử dụng
• Method: phương thức thực hiện trên form– GET: mặc định– POST
CCáácc ththàànhnh phphầầnn khkháácc
• Textarea: thành phần hiển thị văn bản– Bắt đầu và kết thúc bởi <Texterea> và
</Texterea> – Các thuộc tính
• Name • Rows • Cols • Wrap: (off, vitual, physical)
CCáácc ththàànhnh phphầầnn khkháácc ((tttt))
• Select: thành phần cho phép hiển thị danh sách– Bắt đầu và kết thúc bởi <select> và </select> – Các thuộc tính
• Name • Size• Multiple
– Thẻ <option> </option> có thể chèn trong thẻ select, gồmcác thuộc tính
• Selected • Value• Disable
CCáácc ththàànhnh phphầầnn khkháácc ((tttt))
• input:– Bắt đầu và kết thúc bởi <input> và </input> – Các thuộc tính
• Name • Type
– checkbox, radio.– submit, button, reset.– password, text, file.– hidden, image
• Checked: trường hợp type là checkbox, radio.• Maxlength: trường hợp type là text, password• Size
CCáácc ththàànhnh phphầầnn khkháácc ((tttt))
• Input (tt)– Kiểu text: ô nhập liệu
• <input type="text" name="name" />– Kiểu submit: nút nhấn
• <input type="submit“ name="submit" value="Submit"/ >
XXửử lýlý FormForm
• Khi form được submit, ta có thể lấy các giá trịtừ các thành phần trên form
• Truy xuất giá trị từ các thành phần trên Form được gởi (submit) bằng POST thông qua biếntoàn cục $_POST.
• Vd: $content = $_POST [‘txtContent’];
• Lệnh: print_r ($_POST): hiển thị toàn bộ nộidung của mảng $_POST.
XXửử lýlý FormForm
• Ví dụ: trang action.html
• Trang action.php
XXửử lýlý FormForm
• Ví dụ: trang form.php
• Trang submit.php
XXửử lýlý FormForm
• Form.htlm
• Form.php
1
11
ChươngChương 44TTổổngng quanquan vvềề truytruy ccậậpp
cơcơ ssởở ddữữ liliệệuu
22
MMụụcc tiêutiêu• Sau khi học xong chương này, sinh viên có
thể:– Hiểu về công nghệ ADO. NET, hệ quản trị SQL
Server 2005 Express và công cụ SQL Server Management.
– Hiểu vai trò của các điều khiển DataBound vàDataSource.
– Sử dụng SQL Server Management và Server Explorer để tạo Server database và Local data-base.
– Sử dụng SqlData-Source để kết nối và truy cậpCSDL
2
33
NNộộii dungdung• Công nghệ ADO.NET.• SQL Server 2005 Express• Điều khiển DataBound.• Điều khiển DataSource.• Điều khiển SqlDataSource
44
1. 1. CôngCông nghnghệệ ADO.NETADO.NET• ADO.NET (Active Data Objects .NET) là
công nghệ truy cập cơ sở dữ liệu củaMicrosoft
• ADO.NET là công nghệ truy cập cơ sở dữliệu trong .NET Framework
• ADO.NET không phải là bản nâng cấp củaADO, đây là một công nghệ hoàn toàn mới(như ASP.NET và ASP)
3
55
1. 1. CôngCông nghnghệệ ADO.NETADO.NET• Việc truy cập dữ liệu trong ADO.NET được
thiết kế thành 3 lớp:– Lớp thấp nhất là lớp vật lý lưu trữ dữ liệu, đây có
thể là một tập tin Access, một cơ sở dữ liệu SQL hay một tập tin XML
– Lớp giữa (lớp trừu tượng) là lớp cung cấp dữliệu, thực hiện các chức năng kết nối cơ sở dữliệu, thao tác với dữ liệu
– Lớp trên cùng là tập dữ liệu (DataSet), đây làánh xạ của cơ sở dữ liệu vào bộ nhớ để làm việc
66
KiKiếếnn trtrúúcc ccủủaa ADO.NETADO.NET
4
77
MMụụcc tiêutiêu ccủủaa ADO.NETADO.NET• Cung cấp các lớp để thao tác CSDL trong cả
hai môi trường là phi kết nối (Disconected data) và kết nối (Connected data)
• Tích hợp chặt chẽ với XML (Extensible Markup Language)
• Tương tác với nhiều nguồn dữ liệu thôngqua mô tả dữ liệu chung
• Tối ưu truy cập nguồn dữ liệu (OLE DB & SQL server)
• Làm việc trên môi trường Internet
88
ƯuƯu điđiểểmm ccủủaa ADO.NETADO.NET• Người dùng có thể làm việc với cơ sở dữ
liệu thông qua DataSet mà không cần quantâm đến loại cơ sở dữ liệu cụ thể
• Tiết kiệm công sức xây dựng ứng dụng(không cần phải viết lại chương trình khi thayđổi cơ sở dữ liệu)
5
99
CCáácc namespace namespace cơcơ bbảảnn ccủủaa ADO.NETADO.NET
• System.Data• System.Data.SqlClient: Dùng cho cơ sở dữ
liệu SQL• System.Data.OleDb: Dùng cho cơ sở dữ liệu
access• System.Data.OracleClient: Dùng cho cơ sở
dữ liệu Oracle
1010
CCấấuu trtrúúcc ccủủaa ADO.NETADO.NET
6
1111
CCáácc đđốốii tưtượợngng ConnectionConnection• OleDbConnection: Kết nối với CSDL Access • SqlConnection: Kết nối đến CSDL SQL
Server• OracleConnection: Kết nối với CSDL Oracle• Khi làm việc với mỗi loại dữ liệu, ta cần khai
báo các namespace tương ứng– using System.Data.OleDb; – using System.Data.SqlClient;– using System.Data.OracleClient;
1212
2. SQL Server 2005 Express2. SQL Server 2005 Express• Microsoft SQL Server 2005 Express là phiên
bản của SQL Server được kèm theo Visual Studio, có thể tải về tại Website http://msdn.microsoft.com/sql/2005
• Microsoft SQL Server 2005 Express đượcxem như bản thu gọn của phiên bản SQL Server 2005, do đó phần mềm này chỉ giớihạn trong một số tính năng
7
1313
SQL Server 2005 Express ManagementSQL Server 2005 Express Management
• Có thể sử dụng một trong ba công cụ để tạocơ sở dữ liệu mới khi dùng SQL Server 2005 Express– Sử dụng Server Explorer trong Visual Studio– Sử dụng Microsoft SQL Server Management
Studio Express, tải ở Website http://msdn.microsoft.com/sql/2005
– Sử dụng giao diện dòng lệnh SQLCMD –S.\SQLExpress. Kế đến là nhập các câu lệnhSQL tại dấu nhắc
1414
Server databaseServer database• Cơ sở dữ liệu được lưu trữ trên Server của
hệ quản trị cơ sở dữ liệu
8
1515
Server database (Server database (tttt))• Tạo server database
– Sử dụng Microsoft SQL Server Management Studio Express
– Tạo trực tiếp trong môi trường VS.Net: cửa sổServer Explorer
1616
Local databaseLocal database• Tập tin cơ sở dữ liệu được lưu trữ trong thư
mục App_data của Website• So sánh local database và server database
– Sử dụng local database dễ dàng sao chép, dichuyển thư mục website (file CSDL nằm trongthư mục) thay vì phải backup, restore như đốivới server database
– Trong ứng dụng sử dụng CSDL phức tạp, kếthợp với cơ chế bảo mật của ASP.NET, server database thích hợp hơn
9
1717
ĐiĐiềềuu khikhiểểnn DataBoundDataBound• Các điều khiển DataBound thường được sử
dụng để tạo ra giao diện người dùng khi truycập dữ liệu
• Các điều khiển DataBound có thể được sửdụng để hiển thị và sửa đổi cơ sở dữ liệu, dữliệu XML hoặc các kiểu dữ liệu khác
• Có ba loại điều khiển DataBound tiêu biểu: –Điều khiển danh sách–Điều khiển dạng bảng–Điều khiển phân cấp
1818
ĐiĐiềềuu khikhiểểnn danhdanh ssááchch• Được sử dụng để hiển thị các danh sáchđơn giản, gồm các điều khiển:– DropDownList– ListBox– CheckBoxList– RadioButtonList– BulletedList
• Các điều khiển trên đều thừa kế cùng mộtlớp cơ sở ListControl. Do đó, chúng cóchung một tập các thuộc tính và phươngthức
10
1919
ĐiĐiềềuu khikhiểểnn phânphân ccấấpp• Điều khiển DataBound phân cấp được sử
dụng để hiển thị các phần tử dữ liệu lồngnhau, như– Hiển thị thư mục và cấu trúc Website– Nội dung của tập tin XML
• Điều khiển phân cấp gồm các điều khiển:– Menu: Hiển thị các phần tử dữ liệu trong một
menu tĩnh hoặc động– TreeView: Hiển thị các phần tử dữ liệu trong cấu
trúc cây
2020
ĐiĐiềềuu khikhiểểnn ddạạngng bbảảngng• Là các điều khiển được sử dụng để hiển thị
và sửa đổi dữ liệu được lấy từ cơ sở dữ liệuhay các nguồn dữ liệu khác
• Được chia thành hai nhóm chức năng:– Hiển thị nhiều phần tử dữ liệu:
• GridView• DataList• Repeater
– Hiển thị một phần tử dữ liệu ở mỗi thời điểm• DetailsView• FormView
11
2121
4. 4. ĐiĐiềềuu khikhiểểnn DataSourceDataSource• Một điều khiển DataBound (GridView, DataList, BulletedList, ListBox, CheckBoxList, … ) được gắn với một điềukhiển DataSource.
• Có năm loại điều khiển DataSource– SqlDataSource– AccessDataSource– SiteMapDataSource– XMLDatasource– ObjectDataSoure
2222
ĐiĐiềềuu KhiKhiểểnn SqlDataSourceSqlDataSource ((tttt))• Điều khiển SqlDataSource cho phép
chúng ta kết nối thao tác nhanh chóng và dễdàng để hiển thị các loại cơ sở dữ liệu nhưSQL Server, Oracle Server, ODBC, OLE DB,… trong trang Web
• Điều khiển SqlDataSource dùng để kết nốivà có thể thực thi các lệnh trên cơ sở dữ liệuSQL
12
2323
ĐiĐiềềuu KhiKhiểểnn SqlDataSourceSqlDataSource ((tttt))• Điều khiển SqlDataSource sử dụng các đối
tượng ADO.NET như DataSet, DataReadervà Command, cho phép sử dụng các đốitượng ADO.NET qua thao tác trực quankhông phải lập trình
• Được sử dụng kết hợp với các điều khiểnGridView, FormView để hiển thị và cập nhậtdữ liệu, thực thi các lệnh tác động đến cơ sởdữ liệu trong lập trình
2424
KKếếtt nnốốii databasedatabase• Kéo biểu tượng SQLDataSource từ cửa sổ
Toolbox lên WebForm
13
2525
KKếếtt nnốốii database (database (tttt))• Kết nối mặc định là Microsoft SQLServer, ta
có thể chọn một data source khác bằng cáchclick vào nút Change..
2626
KKếếtt nnốốii vvớớii SQL Server SQL Server
14
2727
KKếếtt nnốốii vvớớii local databaselocal database• Chọn một loại data source (Access file, SQL
Server file,….
2828
KKếếtt nnốốii vvớớii local database (local database (tttt))• Click nút Browse để
chọn file database.• Chọn Test Connection để kiểm tra kết nối
• Chọn OK
15
2929
ChuChuỗỗii kkếếtt nnốốii• Chuỗi kết nối SQLServer database file:
– "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|MyDatabase.mdf;Integrated Security=SSPI;User Instance=True”
• Chuỗi kết nối Access database file– "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source= |DataDirectory|\NewsDb.mdb;Persist Security Info=True“providerName="System.Data.OleDb"
3030
ChuChuỗỗii kkếếtt nnốốii ((tttt))• Chuỗi kết nối với CSDL trên server :
– "Data Source=.\SQLExpress;Initial Catalog = MyDatabase;Integrated Security = True”Hoặc"Server=.\SQLExpress;Database=MyDatabase;Integrated Security = True"
– Trong đó, Initial Catalog là tên cơ sởdữ liệu muốn kết nối
16
3131
KKếếtt NNốốii VVớớii CơCơ SSởở DDữữ LiLiệệuu KhKháácc• Có thể kết nối với cơ sở dữ liệu khác như
Microsoft Access bằng điều khiểnSqlDataSource
• Khi kết nối với bất kỳ cơ sở dữ liệu nào khácvới SQL Server, ta cần sửa lại thuộc tínhProviderName của điều khiểnSqlDataSource. – Ví dụ:
ProviderName="System.Data.OleDb"
3232
ChChứứaa chuchuỗỗii kkếếtt nnốốii trongtrong ttậậpp tin tin Web.ConfigWeb.Config
• Không nên chứa chuỗi kết nối trong trangWeb mà phải chứa trong tập tin riêng vì:– Không an toàn– Khó quản lý, khó sửa đổi. Vì nếu cần sửađổi phải sửa đổi tất cả các trang trongWebsite
• Vì các lý do trên, chúng ta phải đặt chuỗi kếtnối trong tập tin Web.Config.
17
3333
ChChứứaa cchuhuỗỗii kkếếtt nnốốii ttrongrong ttậậpp ttin in Web.ConfigWeb.Config ((tttt))
• Chúng ta có thể thêm nhiều chuỗi kết nối vàotag connectionStrings trong trangWeb.config:
3434
ChChứứaa chuchuỗỗii kkếếtt nnốốii trongtrong ttậậpp tin tin Web.ConfigWeb.Config ((tttt))
• Ngoài việc thêm chuỗi kết nối vào tập tin Web.Config của ứng dụng, chúng ta cóthể thêm chuỗi này vào tập tin Web.Config gốc để có thể sử dụng trongtất cả ứng dụng chạy trên server của chúngta. Tập tin Web.Config gốc được đặt tại:C:\WINDOWS\Microsoft.NET\Framework\[version]\CONFIG
18
3535
SSửử ddụụngđingđiềềuu khikhiểểnn SqlDataSourceSqlDataSource
3636
SSửử ddụụngđingđiềềuu khikhiểểnn SqlDataSource(ttSqlDataSource(tt))• Mã lệnh trên trang giao diện
19
3737
SSửử ddụụngđingđiềềuu khikhiểểnn SqlDataSource(ttSqlDataSource(tt))• Có thể sử dụng SqlDataSource và tham số
3838
SSửử ddụụngđingđiềềuu khikhiểểnn SqlDataSource(ttSqlDataSource(tt))• Có thể sử dụng SqlDataSource và
Request.Form
20
3939
SSửử ddụụngđingđiềềuu khikhiểểnn SqlDataSource(ttSqlDataSource(tt))• Ngoài ra có thể sử dụng SqlDataSource với
các đối tượng sau:– Session– Server Control (DropDownList,ListBox,…– HttpCookie– Proceduce
• Cập nhật dữ liệu cho tham số:SqlDataSource1.SelectParameters[“ProductName”]
. DefaultValue = newvalue;
1
1
Điều khiển danh sách và phân cấp
Lập trình Web – Chương 5
2
Mục tiêunSau khi học xong chương này, sinh viên
có thển Hiểu ý nghĩa và vai trò của các điều khiển
danh sách và phân cấp.n Chọn được loại danh sách thích hợp trong
thiết kế giao diện web siten Biết sử dụng được các điều khiển dùng để
hiển thị dữ liệu ở dạng danh sách.n Biết sử dụng được các điều khiển dùng để
hiển thị dữ liệu ở dạng menu và cây
2
Nội dung
nBài 1: Điều khiển danh sáchnBài 2: Điều khiển phân cấp
3
4
Bài 1: Điều khiển danh sáchn Giới thiệun Khai báo các phần tử.n Kết nối dữ liệu nguồn.n Xác định phần tử được chọn.n Thêm phần tử vào danh sách.n Xóa phần tử từ danh sáchn Thuộc tính AutoPostBack.n Các điều khiển danh sách
3
5
Giới thiệu
6
Giới thiệu
4
7
Khai báo các phần tử
nCác điều khiển danh sách hiển thị một danh sách các phần tử. nMỗi phần tử trong danh sách là một đối
tượng của lớp ListItem. nCó thể khai báo các phần tử trong giao
diện
8
Khai báo các phần tử (tt)
5
9
Khai báo các phần tử (tt)
10
Khai báo các phần tử (tt)
nMỗi phần tử ListItem có các thuộc tính: n Text: chuỗi hiển thị của phần tử trong danh
sáchn Value: giá trị truy xuất phần tử, thường chứa
giá trị khóa của bảng dữ liệun Selected: cho biết trạng thái của phần tử
(chọn hay không chọn)n CheckBoxList, RadioButtonList: dấu checkn ListBox: phần tử được tô đậmn ComboBox: phần tử hiển thịn BulletedList: không sử dụng
6
11
Khai báo các phần tử (tt)
nCó thể khai báo các phần tử bằng code
12
Kết nối dữ liệu nguồn
nCó hai cách kết nối điều khiển danh sách với dữ liệun Khai báo trên giao diện
7
13
Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt)
14
Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt)
8
15
Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt)
16
Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt)
9
17
Kết nối dữ liệu nguồn n Khai báo trên giao diện (tt)
18
Kết nối dữ liệu nguồn n Kết nối dữ liệu bằng code (VD: Ex606d)
10
19
Kết nối dữ liệu nguồn n Kết nối dữ liệu bằng code (tt)
20
Xác định phần tử được chọn
nXác định phần tử được chọn trong danh sách thông qua các thuộc tính:n SelectedIndex: vị trí phần tử đang được chọnn SelectedItem: phần tử đang được chọn
(ListItem)n SelectedValue: truy xuất trường Value của
phần tử đang được chọnn Ví dụ:
n Label1.Text = ListBox1.SelectedItem.Text;n int index = ListBox1.SelectedIndex;n string id = ListBox1.SelectedValue.ToString();
11
21
Thêm phần tử vào danh sách
nSử dụng các phương thức Add, Insert của danh sách Itemsn Add: thêm phần tử vào cuối danh sáchn Insert: thêm phần tử vào danh sách tại vị trí
chỉ địnhn Ví dụ (Ex617.aspx):
n ListBox1.Items.Add(TextBox1.Text);n ListBox1.Items.Insert ( ListBox1.Items.Count,
TextBox1.Text);
Xóa phần tử từ danh sách
nSử dụng các phương thức Remove, RemoveAt của danh sách Itemsn Remove: xóa phần tử (ListItem)n RemoveAt: xóa phần tử theo vị trín Ví dụ:
ListBox1.Items.RemoveAt(ListBox1.SelectedIndex);
ListBox1.Items.Remove(ListBox1.SelectedItem);
22
12
23
Sử dụng thuộc tính AutoPostBack nMặc định, đối với các điều khiển danh
sách, thuộc tính AutoPostBack = False. nDo đó, khi tthay đổi lựa chọn các phần tử
trong danh sách, dữ liệu của trang không được postback về servernMuốn việc thay đổi lựa chọn được xử lý
ngay tức thời, thiết lập giá trị thuộc tính AutoPostBack = Truen Lưu ý: chỉ nên gán AutoPostBack = True
khi thật sự cần thiết. (VD: Ex619.aspx)
24
Các điều khiển danh sách
nĐiều khiển DropDownList.nĐiều khiển RadioButtonList.nĐiều khiển ListBox.nĐiều khiển CheckBoxList.nĐiều khiển BulletedList
13
25
Điều khiển DropDownList nHiển thị một danh sách các lựa chọn với
yêu cầu không gian màn hình tối thiểu. nChỉ cho phép hiển thị một phần tử duy
nhất, các phần tử còn lại chỉ hiển thị khi click vào DropDownListnTại mỗi thời điểm, chỉ có thể chọn một
trong các phần tử của danh sách.
26
Điều khiển ListBox
nTương tự như điều khiển DropDownListnĐiểm khác nhau giữa ListBox và
DropDownList:n ListBox hiển thị tất cả phần tử . n ListBox cho phép người sử dụng chọn nhiều
phần tử cùng một lúc (Ex618.aspx)
14
27
Điều khiển CheckBoxList
nHiển thị danh sách các check boxnCác phần tử có thể được
bố trí theo hướng ngang hay dọcnCho phép chọn nhiều phần tử
28
Điều khiển CheckBoxList (tt)
nMột số thuộc tínhn RepeatColumns: số cộtn RepeatDirection: Hướng trình bày dữ liệun RepeatLayout: trình bày dữ liệu dạng bảng
(table) hoặc tuần tự (flow)n DataTextField: trường dữ liệu hiển thịn DataValueField: trường giá trị ẩn, truy xuất
thông qua thuộc tính SelectedValue
15
29
Điều khiển RadioButtonList
nHiển thị danh sách các RadioButtonnChỉ cho phép chọn một phần tử tại mỗi
thời điểmnCác thao tác với điều khiển này tương đương với điều khiển CheckBoxList
30
Điều Khiển BulletedList
nHiển thị danh sách kiểu liệt kênMỗi phần tử có thể hiển thị ở dạng văn
bản, LinkButton hoặc HyperLinknĐiều khiển BulletedList không hỗ trợ các
thuộc tính SelectedIndex, SelectedItem và SelectedValue
16
31
Điều Khiển BulletedList (tt)
nMột số thuộc tínhn BulletStyle: Kiểu của các kí hiệun DisplayMode
n Textn HyperLinkn LinkButton
32
Bài 2. Điều khiển phân cấp
nGiới thiệunMenunTreeView
17
33
Giới thiệunĐiều khiển DataBound phân cấp được sử
dụng để hiển thị các phần tử dữ liệu theo dạng phân cấpnHai điều khiển thường được sử dụngnMenu: Hiển thị các phần tử dữ liệu trong
một menu tĩnh hoặc độngnTreeView: Hiển thị các phần tử dữ liệu
trong cấu trúc câynCác điều khiển trên có thể dùng để liên kết đến địa chỉ một trang Web
34
Giới thiệu
18
35
Điều khiển menu
nMỗi điều khiển menu bao gồm nhiều menu itemnMỗi menu item bao gồm các menu item
khác theo dạng phân cấp
36
Điều khiển menu
19
37
Tạo phần tử cho menu
38
Tạo phần tử cho menu (tt)
nMenu item: gồm các thuộc tínhn ImageUrl: ảnh hiển thị trên phần tửn NavigateUrl: địa chỉ URL trang liên kết đếnn Text: chuỗi hiển thị trên phần tửn Value: trường giá trịn Selected: trạng thái chọn/ không chọnn Tooltip
nBiến cố mặc định: MenuItemClickn Ví dụ: EX803.aspx
20
39
Tạo phần tử cho menu (tt)
40
Tạo phần tử cho menu (tt)
21
41
Menu và MultiViewnCó thể sử dụng điều khiển Menu kết hợp
với điều khiển MultiView để tạo thành các TabPagen Điều khiển Menu hiển thị các tabn Điều khiển MultiView hiển thị nội dung trên
mỗi tabn Ví dụ:
ex803b.aspx
42
Menu và MultiView (tt)
22
43
Menu và MultiView (tt)
44
Menu và MultiView (tt)
23
45
Liên kết Menu với XML
nĐiều khiển Menu có thể liên kết với tập tin XML để hiển thị dữ liệu trong tập tin bằng cách sử dụng điều khiển XmlDataSourcenVí dụ: ex804.aspx
46
Liên kết Menu với XML (tt)
24
47
Liên kết Menu với CSDL
nKhông thể kết nối trực tiếp điều khiển Menu với SqlDataSource hoặc ObjectDataSourcenChủ yếu sử dụng code nVí dụ: MenuRuntimeDemo.aspx
48
Liên kết Menu với CSDL (tt)
25
49
Liên kết Menu với CSDL (tt)
50
Định dạng Menu
nThông qua các thuộc tính:n Orientationn StaticHoverStylen StaticMenuItemStylen StaticSelectedStyle
nCó thể sử dụng chức năng AutoFormat
26
51
Điều khiển TreeViewnĐiều khiển TreeView tương tự như điều
khiển Menu.nCho phép hiển thị dữ liệu
phân cấp nĐiểm khác nhau cơ bản
của hai điều khiển này là cách hiển thịnMỗi phần tử của điều khiển
TreeView là một đối tượng TreeNode (Ex805.aspx)
52
Thêm nút vào TreeView
nSử dụng cửa sổ TreeViewNode Editor
27
53
Thêm nút vào TreeView (tt)
54
Thêm nút vào TreeView (tt)
28
55
Hiển thị CheckBoxnThiết lập giá trị cho thuộc tính ShowCheckBoxes. nAllnLeafnNonenParentnRoot
56
Liên kết TreeView với XML
nTương tự Menu, liên kết TreeView trực tiếp với XmlDataSource (Ex808.aspx)
29
57
Liên kết với CSDL – Định dạng
n Liên kết với CSDL: Tương tự như menunĐịnh dạng TreeView: thông qua các thuộc
tínhn ExpandDepthn ToolTipn HoverNodeStylen LeafNodeStylen NodeStylen ParentNodeStylen RootNodeStylen SelectedNodeStyle
58
11/1/2012
1
Chương 6
ĐIỀU KHIỂNDẠNG BẢNG
1
Mục tiêuó Hiểu ý nghĩa và vai trò của các điều
khiển dạng bảng.ó Hiểu ý nghĩa của Template và biểu thức
DataBinding.ó Sử dụng được các điều khiển dùng để
hiển thị một tập mẫu tin ở dạng bảng.ó Sử dụng được các điều khiển dùng để
hiển thị chỉ một mẫu tin ở dạng bảng.
2
11/1/2012
2
Nội dungó Giới thiệuó Điều khiển GridViewó Điều khiển DataListó Điều khiển Repeateró Điều khiển DetailViewó Điều khiển FormView
3
1. Giới thiệuó Các điều khiển DataBound dạng bảng là
các điều khiển thường được sử dụng đểthao tác với cơ sở dữ liệu như hiển thị vàsửa đổi dữ liệu lấy từ cơ sở dữ liệu hay các nguồn dữ liệu khácó Có năm điều khiển dạng bảng, được
chia thành hai loại khác nhau: ◦ Hiển thị nhiều phần tử dữ liệu◦ Hiển thị một phần tử dữ liệu ở mỗi thời điểm
4
11/1/2012
3
1. Giới thiệuó Điều khiển hiển thị một tập các phần tử
dữ liệu◦ GridView◦ DataList◦ Repeateró Điều khiển hiển thị một phần tử dữ liệu
trong mỗi thời điểm : ◦ DetailsView◦ FormView
5
1. Giới thiệu
6
11/1/2012
4
2. GridViewó Sử dụng cửa sổ GridView Tasksó Hiển thị dữ liệu.ó Chọn dữ liệu.ó Sắp xếp dữ liệu.ó Phân trang dữ liệu.ó Cập nhật và xóa dữ liệu.ó Định dạng GridView.ó Sử dụng các trường
7
Sử Dụng Cửa Sổ GridView Tasksó Cửa sổ GridView Tasks cho phép thiết
lập hầu hết các thao tác trên điều khiểnGridView. ◦ Chọn nguồn dữ liệu◦ Định dạng◦ Chỉnh sửa các cộtó Để sử dụng cửa sổ GridView Tasks,
click vào mũi tên nhỏ phía trên phải củađiều khiển GridView (hoặc click phảivào GridView và chọn Show SmartTag)
8
11/1/2012
5
Sử Dụng Cửa Sổ GridView Tasks
9
Hiển thị dữ liệuó Điều khiển GridView hiển thị các phần tử
dữ liệu trong một bảng. Mỗi phần tử dữ liệutương ứng với một hàngó Để hiển thị dữ liệu, chỉ cần gán nguồn dữ
liệu cho GridView bằng khai báo hoặc bằngcode◦ Khai báo: gán vào thuộc tính DataSourceId là
một Object DataSource (SqlDataSource, AccessDataSource,…)
◦ Bằng code: Gán vào thuộc tính DataSource mộtnguồn dữ liệu (DataTable, SqlDataSource, …), sau đó gọi phương thức DataBind
10
11/1/2012
6
Hiển thị dữ liệu (tt)
11
Chọn dữ liệuó Có thể xác định hàng nào được chọn
trong GridView bằng cách sử dụng bấtkỳ thuộc tính nào sau đây: ◦ SelectedValue: truy xuất trường giá trị◦ SelectedDataKey: truy xuất trường khóa◦ SelectedIndex: truy xuất vị trí phần tử◦ SelectedRow: truy xuất dòng được chọn
12
11/1/2012
7
Chọn Dư Liệu (tt)ó Ví dụ (Ex704.aspx):
◦ Trang Web chứa hai điều khiển GridView. ◦ Điều khiển GridView thứ nhất hiển thị danh
sách các loại phim. ◦ Khi chúng ta chọn một loại phim, điều khiểnGridView thứ hai hiển thị danh sách củacác tựa phim thuộc loại đã chọn được tìmthấy
13
Chọn Dư Liệu (tt)
14
11/1/2012
8
Chọn Dư Liệu (tt)
15
Sử Dụng Khóaó Chúng ta kết hợp một khóa với mỗi hàng
trong GridView bằng cách cung cấpcác giá trị phân biệt tương ứng với cáchàng đó cho thuộc tính DataKeyNamescủa điều khiển GridView. ó Các giá trị có thể là các trị của một hay
nhiều trường (các tên trường phải đượcphân cách bằng dấu phẩy) nào đó đượcsử dụng làm khóa chính trong cơ sở dữliệu.
16
11/1/2012
9
Sử Dụng Khóa (tt)ó Ví dụ (Ex705.aspx): bảng Employees
của cơ sở dữ liệu EmployeesDB.mdf sửdụng hai trường FirstName và LastNamelàm khóa chính. ó Trong trang Web, khi chọn một người thì
thông tin chi tiết về người đó sẽ đượchiển thị.
17
Sử Dụng Khóa (tt)
18
11/1/2012
10
Sử Dụng Khóa (tt)
19
Sắp xếp dữ liệuó Thiết lập thuộc tính AllowSorting = true. ó Khi đó, các tiêu đề cột hiển thị dạng liên
kết. ó Click vào tiêu đề của một cột, các hàng
trong GridView sẽ được sắp thứ tựtăng dần theo cột đã chọnó Ví dụ (Ex706.aspx)
20
11/1/2012
11
Sắp Xếp dữ liệu với AJAXó Mặc định, khi chúng ta click vào tiêu đề
cột để sắp thứ tự, trang Web chứaGridView được gởi đến server. ó Để tránh gởi toàn bộ trang Web, chúng
ta có thể sử dụng ưu điềm của AJAX(Asynchronous JavaScript and XML) đểsắp xếp bằng cách thiết lập thuộc tínhEnableSortingAndPagingCallbacks = True. ó (VD Ex707.aspx)
21
Sắp xếp dữ liệu sử dụng codeó Sử dụng phương thức Sort() của điều
khiển GridViewó Ví dụ (Ex708.aspx)grdMovies.Sort( ddlSort.Text,SortDirection.Ascending);
22
11/1/2012
12
Phân trang dữ liệuó Khi làm việc với cơ sở dữ liệu có số
lượng mẫu tin lớn, cần phải hiển thị cácmẫu tin trong nhiều trang khác nhau. ó Để phân trang các mẫu tin cần hiển thi
trong điều khiển GridView, thiết lậpthuộc tính AllowPaging = TrueVd: Ex709.aspx)
23
Phân trang với AJAXó Ý nghĩa của việc phân trang với AJAX
cũng tương tự như sắp xếp với AJAX. ó Chúng ta thiết lập thuộc tính
EnableSortingAndPagingCallbacks củaGridView là true (Vd: Ex710.aspx)
24
11/1/2012
13
Cập nhật và xóa dữ liệuó Điều khiển GridView cũng cho phép
sửa đổi dữ liệu trong cơ sở dữ liệu màkhông cần viết mã lệnh (Vd: Ex711.aspx)ó Các lệnh UpdateCommand vàDeleteCommand của SQL có chứa cáctham số. Ví dụ, lệnh UpdateCommand códạng:◦ UPDATE Movies SET Title=@Title,
Director=@Director WHERE Id=@Id
25
Cập nhật và xóa dữ liệu (tt)
26
11/1/2012
14
Định dạng GridViewó Sử dụng chức năng AutoFormató Thiết lập các thuộc tính:
◦ HeaderStyle◦ FooterStyle◦ RowStyle◦ SelectedRowStyle◦ EditRowStyle◦ …
27
Tùy biến các cột trong GridViewó Trong cửa sổ GridView Tasks, chọn Edit
Column◦ BoundField: các trường trong bảng dữ liệu◦ CheckBoxField: hiển thị
dạng checkbox◦ HyperLinkField: hiển thị
dạng liên kết◦ ImageField: hiển thị dạng
hình ảnh◦ CommandField: các nút
chức năng: Select, Delete, Edit
28
11/1/2012
15
Điều Khiển DataListó Cũng như điều khiển GridView, điều
khiển DataList được sử dụng để hiểnthị một tập dữ liệu ở một thời điểm. ó Được sử dụng để hiển thị các mẫu tin
trong bảng cơ sở dữ liệu.
29
Hiển thị dữ liệuó Để hiển thị dữ liệu bằng điều khiểnDataList, chúng ta phải cung cấp chođiều khiển này thành phầnItemTemplate. ó Nội dung của ItemTemplate sẽ được
hiển thị cho mỗi phần tử của dữ liệunguồn
30
11/1/2012
16
Hiển thị dữ liệu (tt)ó Điều khiển DataList hỗ trợ một tập các
template sau: ◦ ItemTemplate◦ AlternatingItemTemplate◦ SeparatorTemplate◦ HeaderTemplate◦ FooterTemplate
31
Hiển thị dữ liệu (tt)ó Ngoài ra, điều khiển DataList cũng hỗ
trợ hai template sau: ◦ EditItemTemplate◦ SelectedItemTemplateó Click vào mũi tên nhỏ phía trên phải củađiều khiển DataList, xuất hiện cửa sổDataList Tasks
32
11/1/2012
17
Hiển thị dữ liệu (tt)ó Vd: Ex712.aspx
33
Hiển thị dữ liệu (tt)ó Ghi chú:
◦ Biểu thức liên kết dữ liệu được chứa trongdấu phân cách <%# và %>
◦ Phương thức Eval() hay Bind(). ñ Phương thức Eval() nhận một đối số là tên một
trường và trả về chuỗi chứa giá trị của trường đótrong mẫu tin hiện hành từ bảng cơ sở dữ liệu. ñ Chúng ta có thể cung cấp đối số tùy chọn thứ haiđể định dạng chuỗi trả về.
34
11/1/2012
18
Hiển thị dữ liệu (tt)ó Các kiểu định dạng
◦ General – {0}◦ Number – {0:N}◦ Decimal – {0:D}◦ Fixed-point – {0:F}◦ Currency – {0:C}◦ Scientific - {0:E}◦ Hexadecimal – {0:X}
Ví dụ: <%#Eval("BoxOfficeTotals","{0:c}") %>sẽ hiển thị giá trị của trường BoxOfficeTotals trongmẫu tin hiện hành ở dạng Currency
35
Hiển thị dữ liệu (tt)ó Truyền query string trong phần tử
ItemTemplate<a href='<%# “nextpage.aspx? id=“ + Eval("NewsID")) %>’ >click here go to next page</a>
36
11/1/2012
19
Hiển Thị Header Và Footeró HeaderTemplate vàFooterTemplate trong điều khiểnDataList dùng để hiển thị tiêu đề đầuvà cuối của bảng các phần tử dữ liệu. ó Vd Ex713.aspx: HeaderTemplate chứa
tiêu đề của bảng và FooterTemplatechứa một điều khiển Label để hiển thị tổng giá trị của các hàng trước đó.
37
Hiển Thị Header Và Footer (tt)
38
11/1/2012
20
Hiển thị dữ liệu trong nhiều cộtó Có thể hiển thị nội dung của điều khiểnDataList thành một bảng có nhiều cột, trong đó mỗi phần tử dữ liệu được chứatrong một ô. ó Có hai thuộc tính của DataList được sử
dụng để bố trí cách hiển thị này: ◦ RepeatColumns◦ RepeatDirectionó Vd: Ex714.aspx
39
Hiển thị dữ liệu trong nhiều cột
40
11/1/2012
21
Chọn dữ liệuó Sử dụng thuộc tính SelectedValue
◦ VD: DataListDemo.aspx
41
Chọn dữ liệu (tt)
42
11/1/2012
22
Cập nhật và xóa dữ liệuó Có thể sử dụng DataList để thay đổi dữ
liệu trong database. ó Tuy nhiên, với DataList, việc chỉnh sửa
dữ liệu yêu cầu phải viết code trong cácsự kiện◦ UpdateCommand◦ EditCommand◦ DeleteCommand◦ CancelCommandñ VD: DataListEditData.aspx
43
Cập nhật và xóa dữ liệu (tt)
44
11/1/2012
23
Cập nhật và xóa dữ liệu (tt)
45
Cập nhật và xóa dữ liệu (tt)
46
11/1/2012
24
Cập nhật và xóa dữ liệu (tt)
47
Định dạng DataListó Một số thuộc tính dùng để định dạng sự
hiển thị của điều khiển DataList:◦ CssClass◦ AlternatingItemStyle◦ EditItemStyle◦ HeaderStyle◦ FooterStyle◦ ItemStyle◦ SelectedItemStyle◦ SeparatorStyle
48
11/1/2012
25
Điều khiển Repeateró Điều khiển Repeater cho phép hiển thị
một danh sách dữ liệu tùy thích. ó Điều khiển này không có sẵn định dạng
mặc định để hiển thị mà ta phải cung cấpđịnh dạng hiển thị cho Repeater bằngcách tạo ra các template. ó Có thể tạo nhiều dạng hiển thị dữ liệu
khác nhau như: Dạng bảng, dạng danhsách được phân cách bằng dấu phẩy (a, b, c, d, …) và dạng danh sách kiểuXML,…
49
Hiển thị dữ liệuó Để hiển thị dữ liệu với điều khiển
Repeater, chúng ta phải tạoItemTemplate bằng chế độ Source view
50
11/1/2012
26
Sử dụng Templateó Điều khiển Repeater hỗ trợ năm loại
template khác nhau: ◦ ItemTemplate: template cho mỗi phần tử◦ AlternatingItemTemplate: template
cho tất cả các phần tử◦ SeparatorTemplate: template giữa hai
phần tử◦ HeaderTemplate◦ FooterTemplateVD: ex716.aspx
51
Điều khiển DetailViewó Điều khiển DetailsView và FormView
cho phép hiển thị và thao tác với chỉ mộtphần tử dữ liệu ở mỗi thời điểm. ó Hai điều khiển này dùng để hiển thị, phân
trang, sửa, chèn/thêm và xóa dữ liệuó Sự khác nhau giữa hai điều khiển này là:
◦ DetailsView: hiển thị một mẫu tin theo dạngbảng.
◦ FormView: sử dụng template để tạo giao diệnngười dùng tùy ý
ó Điều khiển DetailsView thường đượcdùng chung với GridView để sửa đổi dữliệu
52
11/1/2012
27
Hiển thị dữ liệuó Điều khiển DetailsView hiển thị mẫu
tin trong một bảng. ó Điều khiển này hỗ trợ cả hai dạng liên
kết dữ liệu bằng khai báo và bằng lậptrình
53
Sử dụng các trườngó Được dùng để tùy biến các trường hiển
thị trong DetailsViewó Điều khiển DetailsView hỗ trợ một tập
các trường tương tự GridView◦ BoundField◦ CheckBoxField◦ CommandField◦ ButtonField◦ HyperLinkField◦ ImageField◦ TemplateField
54
11/1/2012
28
Sử dụng các trường (tt)ó Tùy biến các trường:
55
Phân trang dữ liệuó Thiết lập thuộc tính AllowPaging = trueó Phân trang với Ajax: tương tự GridView:ó Có thể hiệu chỉnh giao
diện phân trang vớithuộc tính PagerSettings
56
11/1/2012
29
Phân trang dữ liệu (tt)
57
Cập nhật dữ liệuó Thiết lập thuộc tínhAutoGenerateEditButton = True
58
11/1/2012
30
Thêm, xóa dữ liệuó Thêm dữ liệu: thiết lập thuộc tínhAutoGenerateInsertButton= Trueó Xóa dữ liệu: thiết lập thuộc tínhAutoGenerateDeleteButton = True
59
Định dạng DetailsViewó Một số thuộc tính
◦ CssClass◦ AlternatingRowStyle◦ CommandRowStyle◦ HeaderStyle◦ FooterStyle◦ PagerStyle◦ RowStyle◦ EditRowStyle◦ InsertRowStyle◦ GridLines◦ HeaderText◦ FooterText
60
11/1/2012
31
Điều khiển FormViewó Tương tự DetailsView, nhưng hiển thị
các phần tử dữ liệu thông qua Templateó Điều khiển FormView được dùng để
hiển thị, phân trang, sửa, chèn và xóacác mẫu tin trong cơ sở dữ liệuó Điều khiển FormView còn cho phép thêm
các điều khiển kiểm chứng dữ liệuó Hiển thị dữ liệu: Thiết kế các thành phần
trong ItemTemplate (tương tự DataList)
61
Phân trang dữ liệuó Thiết lập thuộc tính AllowPaging =Trueó Thay đổi các tùy chọn trong thuộc tính
PagerSettings
62
11/1/2012
32
Phân trang dữ liệu (tt)ó Có thể sử dụng PagerTemplate để tùy
biến giao diện phân trang
63
Phân trang dữ liệu (tt)Thuộc tính CommandArgument có thể có
các giá trị:◦ First◦ Last◦ Prev◦ Next
64
11/1/2012
33
Cập nhật, thêm và xóa dữ liệuó Chọn Generate INSERT, UPDATE,
DELETE cho SQLDataSource làm dữliệu nguồn của FormView
65
22.11.2012
1
Truy cập cơ sở dữ liệu bằng chương trình
Chương 7
1
Mục tiêu
ó Sau khi học xong chương này, sinh viên có thể: ◦ Hiểu được mô hình truy cập CSDL của
ADO.NET gồm các đối tượng Connection, Command, DataReader, DataAdapter, DataTable, DataView và DataSet.
◦ Biết sử dụng các mô hình của ADO.NET để truy cập và thao tác với cơ sở dữ liệu SQL Server và Microsoft Access bằng mã lệnh
2
22.11.2012
2
Nội dung ó Sử dụng mô hình kết nối để thao tác với cơ
sở dữ liệu ◦ Đối tượng Connection. ◦ Đối tượng Command ◦ Đối tượng DataReader
ó Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu ◦ Đối tượng DataAdapter ◦ Đối tượng DataTable ◦ Đối tượng DataView ◦ Đối tượng DataSet
3
Bài 1. Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu
ó Giới thiệu ó Đối tượng Connection. ó Đối tượng Command ó Đối tượng DataReader ó Sử dụng mô hình kết nối để thực hiện
các thao tác với cơ sở dữ liệu
4
22.11.2012
3
Giới thiệu ó ADO.NET cho phép làm việc ở cả hai
chế độ: ◦ Chế độ kết nối (Connected) ◦ Chế độ phi kết nối (Disconnected)
Thực hiện nhiệm vụ kết
nối đến CSDL
Thực hiện các câu lệnh SQL thao tác
với CSDL
Đón nhận kết quả trả về từ đối
tượng Command
Cầu nối giữa nguồn dữ liệu và các bảng được cached trong bộ nhớ
Kho chứa các bảng
5
Đối tượng Connection
ó Là đối tượng có nhiệm vụ thực hiện nhiệm vụ kết nối đến CSDL để các đối tượng như Command thao tác với CSDL thông qua kết nối này
Application Database
Connection
6
22.11.2012
4
Đối tượng Connection (tt)
ó Thuộc tính: ◦ ConnectionString: chuỗi kết nối đến
database ◦ State: trạng thái kết nối, thường được sử
dụng để kiểm tra kết nối thành công hay không. VD: if (con.State.ToString() =="Open" )
ó Phương thức: ◦ Open: mở kết nối ◦ Close: đóng kết nối
7
Đối tượng Connection (tt)
ó Đối tượng Connection kết nối với CSDL SqlServer: SqlDataConnection (khai báo namespace System.Data.SqlClient) ó Đối tượng Connection kết nối với CSDL
Access: OleDataConnection (khai báo namespace System.Data.OleDb) ó Khi tạo một đối tượng Connection, chúng ta
phải truyền chuỗi kết nối đến phương thức tạo dựng, hoặc gán chuỗi kết nối vào thuộc tính ConnectionString của đối tượng
8
22.11.2012
5
Đối tượng Connection (tt)
ó Tạo đối tượng Connection
9
Đối tượng Connection (tt)
ó Có thể truy xuất chuỗi kết nối lưu trong trang Web.config thông qua đối tượng WebConfigurationManager (Khai báo namespace System.Web.Configuration)
10
22.11.2012
6
Đối tượng Connection (tt)
ó Chuỗi kết nối trong Web.config
11
Đối tượng Connection (tt)
ó Sử dụng đối tượng Connection: ◦ Trước khi thực thi bất kỳ lệnh nào đối với dữ
liệu, trước hết chúng ta phải mở kết nối. ◦ Sau khi thực thi lệnh xong, chúng ta phải đóng kết nối.
◦ Ngoài ra, cần sử dụng các cơ chế xử lý ngoại lệ nếu có lỗi xảy ra ñ try…catch…finaly ñ Lệnh using: buộc kế nối phải đóng ngay cả khi có
biệt lệ xảy ra
12
22.11.2012
7
Đối tượng Connection (tt)
13
Đối tượng Connection (tt)
ó Các bước thực hiện: ◦ Tạo một Connection. ◦ Mở connection. ◦ Truyền connection cho các đối tượng
ADO.NET khác. ◦ Thực hiện các thao tác database với các đối
tượng ADO.NET này. ◦ Đóng connection.
14
22.11.2012
8
Đối tượng Connection (tt)
ó Các bước thực hiện:
15
Đối tượng Command
ó Dùng để thực hiện các câu lệnh SQL thao tác với CSDL như: Select, Insert, Update, Delete.
Application
Connection
Database Command
16
22.11.2012
9
Đối tượng Command (tt) ó Thuộc tính:
• Connection: kết nối để thực hiện lệnh • CommandText: câu lệnh cần thực hiện • CommandType: loại câu lệnh (Text, TableDirect,
StoredProcedure) • Phương thức:
• ExecuteScalar(): thực hiện câu lệnh và trả về giá trị đơn
• ExecuteNonQuery(): gọi các lệnh SQL, store, trả về số record bị tác động (Insert, Update, Delete…)
• ExecuteReader(): thực hiện câu lệnh trả về đối tượng DataReader
17
Đối tượng Command (tt)
ó Đối tượng Command dùng trong CSDL SqlServer: SqlCommand ó Đối tượng Command dùng trong CSDL
Access: OleDbCommand ó Tạo đối tượng Command
◦ Sử dụng phương thức tạo dựng ◦ Sử dụng phương thức CreateCommand của đối tượng Connection
18
22.11.2012
10
Đối tượng Command (tt)
ó Tạo đối tượng Command (tt)
19
Đối tượng Command (tt)
ó Tạo đối tượng Command (tt) ◦ Có thể thiết lập các thuộc tính cho đối tượng
Command sau khi tạo:
20
22.11.2012
11
Đối tượng Command (tt)
ó Phương thức ExecuteReader: ◦ Phương thức này trả về một tập các bản ghi,
thường được sử dụng để thực thi các câu lệnh truy vấn như Select.
◦ Kết quả có thể lưu trữ trong đối tượng DataReader
21
Đối tượng Command (tt)
ó Phương thức ExecuteScalar: ◦ Trả về một phần tử (cột đầu tiên hàng đầu
tiên) trong bảng kết quả. ◦ Thường được sử dụng thực hiện câu lệnh
truy vấn Select mà kết quả trả về chỉ có một hàng và một cột
22
22.11.2012
12
Đối tượng Command (tt)
ó Phương thức ExecuteNonQuery: ◦ Được sử dụng để thực thi các câu lệnh truy
vấn hành động: Insert, Update, Delete…
23
Đối tượng Command (tt)
ó Phương thức ExecuteNonQuery (tt):
24
22.11.2012
13
Đối tượng Command (tt)
ó Phương thức ExecuteNonQuery (tt):
25
Đối tượng Command (tt)
ó Thực thi lệnh với tham số: ◦ Câu lệnh truy vấn SQL có thể nhận giá trị
thông qua các tham số tại thời điểm thực thi ◦ Cách sử dụng: ñ Tạo tham số trong câu lệnh SQL ñ Khai báo Parameter với những thông tin chính: ñ Tên tham số ñ Kiểu dữ liệu ñ Giá trị
ñ Liên kết Parameter với Command ◦
26
22.11.2012
14
Đối tượng Command (tt)
ó Thực thi lệnh với tham số (tt): ◦
27
Đối tượng DataReader ó Là đối tượng được sử dụng để nhận kết quả trả
về từ đối tượng Command. ó Thuộc tính
• HasRow: cho biết đối tượng DataReader có chứa dữ liệu
• Phương thức: • Read(): đọc một mẫu tin • Close(): đóng • NextResult(): chuyển đến bảng tiếp theo
• Tham chiếu đến các cột trong DataReader: • Sử dụng chỉ số. (reader [0]) • Sử dụng trên trường dữ liệu. (reader[“FirstName”])
28
22.11.2012
15
Đối tượng DataReader
ó Sử dụng DataReader
29
Đối tượng DataReader
ó Sử dụng DataReader nhận về nhiều tập giá trị
30
22.11.2012
16
Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu ó Để thao tác với cơ sở dữ liệu trong mô
hình kết nối chúng ta cần sử dụng đến các đối tượng: ◦ DataConnection: Dùng để mở kết nối đến cơ
sở dữ liệu. ◦ DataCommand: Dùng để thực hiện các câu
lệnh truy vấn SQL để lấy về dữ liệu (Select) hoặc cập nhật dữ liệu (Insert, Update, Delete).
◦ DataReader: Dùng để nhận và duyệt bảng kết quả từ đối tượng Command
31
Truy vấn lấy dữ liệu ó B1. Tạo đối tượng DataConnection, và mở
kết nối đến cơ sở dữ liệu. ó B2. tạo đối tượng DataCommand gắn với đối tượng DataConnection, kết hợp câu lệnh truy vấn Select ó B3. Khai báo biến đối tượng DataReader ó B4. Thi hành phương thức ExcuteReader()
của biến đối tượng DataCommand và gán cho biến đối tượng DataReader. ó B5. Đọc và trình bày dữ liệu ó B6. Đóng và giải phóng các biến đối tượng
nếu không cần thiết.
32
22.11.2012
17
Truy vấn lấy dữ liệu
33
Truy vấn hành động trên CSDL ó B1. Khai báo đối tượng DataConnection, và mở kết
nối đến cơ sở dữ liệu. ó B2. Tạo đối tượng DataCommand gắn với biến đối
tượng DataConnection đã mở. ó B3. Gán giá trị cho thuộc tính CommandType của
biến đối tượng DataCommand ó B4. Gán câu lệnh truy vấn (insert, update, delete, gọi
store procedure…) cho thuộc tính CommandText của biến đối tượng DataCommand
ó B5. Thi hành phương thức ExcuteNonquery() của biến đối tượng DataCommand
ó B6. Đóng và giải phóng các biến đối tượng nếu không cần thiết.
34
22.11.2012
18
Truy vấn hành động trên CSDL
35
Bài 2: Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu
36
22.11.2012
19
Giới thiệu ó Cho phép thao tác với dữ liệu mà không cần duy trì
kết nối ó Ưu điểm của việc sử dụng nhóm đối tượng thuộc
mô hình phi kết nối là chúng cung cấp nhiều chức năng hơn. ◦ Lọc và sắp xếp các hàng (DataView) ◦ Thay đổi nội dung các mẫu tin (DataTable) ◦ …
ó Nhược điểm: tốc độ xử lý chậm. ó Gồm bốn đối tượng:
◦ DataAdapter ◦ DataSet ◦ DataTable ◦ DataView
37
Đối tượng DataAdapter
ó Có chức năng như một cầu nối giữa nguồn dữ liệu và các bảng được cached trong bộ nhớ (đối tượng DataSet). ó DataAdapter điền dữ liệu vào một
DataSet hay DataTable từ một nguồn dữ liệu thông qua phương thức Fill(). ó DataAdapter cập nhật dữ liệu ngược trở
lại nguồn dữ liệu thông qua phương thức Update()
38
22.11.2012
20
Đối tượng DataAdapter (tt)
ó Tạo đối tượng DataAdapter ◦ Từ một đối tượng connection ◦ Từ một chuỗi kết nối
39
Đối tượng DataAdapter (tt)
ó Sử dụng DataAdapter để truy xuất dữ liệu từ cơ sở dữ liệu
40
22.11.2012
21
Đối tượng DataAdapter (tt)
ó Sử dụng DataAdapter để cập nhật dữ liệu ◦ Có thể sử dụng DataAdapter để cập nhật, chèn
và xóa dữ liệu ◦ Sử dụng các thuộc tính InsertCommand,
DeleteCommand và UpdateCommand của đối tượng DataAdapter để cập nhật cơ sở dữ liệu từ DataSet.
◦ Các thuộc tính trên được sinh tự động khi chúng ta tạo lớp DataSet trong môi trường Visual.Net (Strongly Typed Dataset và DataAdapter)
41
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Click chuột phải trên project trong cửa sổ
solution explorer, chọn “Add New Item”, chọn “DataSet”, nhập tên lớp dataset trong ô Name
42
22.11.2012
22
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter:
43
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Cửa sổ “Create TableAdapter” wizard xuất
hiện (nếu cửa sổ này không tự động hiển thị, click chuột phải trên dataset, chọn “Add” èTable Adapter)
44
22.11.2012
23
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Chọn chuỗi kết nối đến CSDL hoặc New
Connection để tạo kết nối mới
45
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Chọn kiểu truy vấn dữ liệu
46
22.11.2012
24
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Click “Query Builder”, chọn các bảng dữ liệu
cần truy vấn
47
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Đặt tên phương thức trong ô Method name
48
22.11.2012
25
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Sử dụng lớp Dataset:
49
Đối tượng DataAdapter (tt)
ó Thực thi truy vấn hành động bằng code ◦ Thiết lập thuộc tính SelectCommand,
InsertCommand, DeleteCommand và UpdateCommand từ đối tượng SqlCommand.
◦ Có thể sử dụng đối tượng CommandBuilder để tạo các UpdateCommand, InsertCommand và DeleteCommand.
◦ Sử dụng phương thức Update() của đối tượng SqlDataAdapter có dạng: ñ int SqlDataAdapter.Update(DataTable)
50
22.11.2012
26
Đối tượng DataAdapter (tt)
51
Đối tượng DataAdapter (tt)
52
22.11.2012
27
Đối tượng DataAdapter (tt)
53
Đối tượng DataAdapter (tt)
54
22.11.2012
28
Đối tượng DataAdapter (tt)
55
Đối tượng DataAdapter (tt)
56
22.11.2012
29
Đối tượng DataAdapter (tt)
57
Đối tượng DataTable
ó Đối tượng DataTable tiêu biểu cho một bảng cơ sở dữ liệu trong bộ nhớ. ó Thuộc tính:
• TableName: tên của bảng dữ liệu • Columns: danh sách các cột • Rows: danh sách các mẫu tin • PrimaryKey: danh sách các cột là khóa chính
• Phương thức: • NewRow(): tạo một mẫu tin mới
58
22.11.2012
30
Đối tượng DataTable (tt)
ó Các thành phần trong DataTable ◦ Mỗi phần tử hàng trong một DataTable là một
DataRow ◦ Mỗi phần tử cột trong DataTable là một
DataColumn ó DataRow:
◦ Phương thức: ñ AcceptChanges(), RejectChanges(): xác nhận hay
loại bỏ mọi sự thay đổi đến hàng trong bảng ñ Remove: đánh dấu hàng bị xóa nếu gọi
AcceptChanges
59
Đối tượng DataTable (tt) ó DataColumn:
◦ ColumnName: tên cột ◦ DataType: kiểu dữ liệu
ó Tạo và thêm dữ liệu vào DataTable: ◦ Tạo đối tượng DataTable ◦ Tạo đối tượng DataColumn, thiết lập các thuộc
tính cho đối tượng ◦ Thêm các DataColumn vào tập Columns của đối
tượng DataTable ◦ Tạo đối tượng DataRow, thiết lập giá trị cho các
ô trong DataRow ◦ Thêm đối tượng DataRow vào tập Rows của đối
tượng DataTable
60
22.11.2012
31
Đối tượng DataTable (tt)
61
Đối tượng DataTable (tt)
ó Có thể truy xuất các mẫu tin từ đối tượng DataTable bằng cách sử dụng phương thức Select() ó Khi truy xuất một mảng các mẫu tin bằng
phương thức Select(), có thể chỉ định thứ tự sắp xếp cho các mẫu tin (Ex909.aspx)
62
22.11.2012
32
Đối tượng DataTable (tt)
ó )
63
Đối tượng DataTable (tt)
64
22.11.2012
33
Đối tượng DataTable (tt)
ó Khi sửa đổi các hàng trong DataTable, DataTable sẽ duy trì cả hai bản gốc (original version) và bản đã sửa của mỗi hàng (modified version) ó Phương thức DataTable.AcceptChanges() được sử dụng để sao chép bản hiện tại của tất cả các hàng đến bản gốc tương ứng ó Phương thức DataTable.RejectChanges() được sử dụng để sao chép bản gốc của tất cả các hàng đến bản hiện tại tương ứng
65
Đối tượng DataTable (tt)
66
22.11.2012
34
Đối tượng DataView
ó Là đối tượng được sử dụng để lọc, sắp xếp dữ liệu từ DataTable ó Đối tượng DataView có hai thuộc tính
quan trọng: ◦ Sort: sắp xếp dữ liệu
dataView.Sort =“Fieldname”; ◦ RowFilter: lọc dữ liệu
dataView.RowFilter = “Alias like ‘abc%’”;
67
Đối tượng DataView (tt)
ó Tạo đối tượng DataView ◦ DataView dataView = new
DataView(dataTable); Hoặc
◦ DataView dataView = dataTable.DefaultView;
68
22.11.2012
35
Đối tượng DataView (tt)
69
Đối tượng DataSet ó Đối tượng DataSet thể hiện cho cơ sở dữ
liệu trong bộ nhớ. ó Một DataSet có thể chứa một hay nhiều đối
tượng DataTable. ó Các bảng trong DataSet có thể là dữ liệu đổ
vào từ DataAdapter (sử dụng phương thức Fill) hoặc được tạo thành từ các đối tượng DataTable. ó Có thể cập nhật dữ liệu từ các bảng này
vào cơ sở dữ liệu thông qua phương thức Update của đối tượng DataAdapter.
70
22.11.2012
36
Đối tượng DataSet (tt) ó Đặc điểm của DataSet
◦ Không kết nối với nguồn dữ liệu. ◦ Không phân biệt dữ liệu thuộc nguồn nào (SQL
Server, OLE DB, ODBC, …). ◦ Có thể lưu trữ dữ liệu từ nhiều bảng (Table),
nhiều nguồn (Data Source) khác nhau. ó Truy xuất bảng trong DataSet:
◦ dsName.Tables[index] ◦ Hoặc dsName.Tables[“DataTableName”]
ó Thêm hoặc xóa bảng bằng phương thức Add, Remove của tập Tables
71
Đối tượng DataSet (tt)
72
22.11.2012
37
Đối tượng DataSet (tt)
73
Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu ó Để thao tác với cơ sở dữ liệu trong mô
hình phi kết nối chúng ta cần sử dụng đến các đối tượng: ◦ DataConnection: Dùng để mở kết nối đến cơ
sở dữ liệu. (Có thể có hoặc không) ◦ DataAdapter ◦ DataSet ◦ DataTable, DataRow…
74
22.11.2012
38
Truy vấn lấy dữ liệu ó B1. Tạo đối tượng DataConnection, và mở kết
nối đến cơ sở dữ liệu. (có thể không sử dụng) ó B2. Tạo đối tượng DataAdapter gắn với đối
tượng DataConnection đã mở hoặc một chuỗi kết nối đến cơ sở dữ liệu, kết hợp với câu truy vấn select.
ó B3. Gọi phương thức Fill để điền dữ liệu lấy về vào DataSet (hoặc DataTable)
ó B4. Sử dụng tập hợp Tables của đối tượng DataSet để làm việc với dữ liệu đã lấy về.
ó B5. Đóng hoặc giải phóng các đối tượng nếu không cần thiết
75
Truy vấn lấy dữ liệu
76
22.11.2012
39
Truy vấn hành động trên CSDL ó B1. Tạo đối tượng DataConnection, và mở kết
nối đến cơ sở dữ liệu. (có thể không sử dụng). ó B2. Khai báo và tạo đối tượng DataAdapter ó B3. Thay đổi dữ liệu trên bảng dữ liệu nằm trong
DataSet. ó B4. Tạo đối tượng CommandBuilder gắn với
biến đối tượng DataAdapter. ó B5. Thi hành phương thức Update để cập nhật
sự thay đổi dữ liệu trong bảng lên cơ sở dữ liệu. ó B6. Đóng và giải phóng các biến đối tượng nếu
không cần thiết
77
Truy vấn hành động trên CSDL
78
22.11.2012
1
Truy cập cơ sở dữ liệu bằng chương trình
Chương 7
1
Mục tiêu
ó Sau khi học xong chương này, sinh viên có thể: ◦ Hiểu được mô hình truy cập CSDL của
ADO.NET gồm các đối tượng Connection, Command, DataReader, DataAdapter, DataTable, DataView và DataSet.
◦ Biết sử dụng các mô hình của ADO.NET để truy cập và thao tác với cơ sở dữ liệu SQL Server và Microsoft Access bằng mã lệnh
2
22.11.2012
2
Nội dung ó Sử dụng mô hình kết nối để thao tác với cơ
sở dữ liệu ◦ Đối tượng Connection. ◦ Đối tượng Command ◦ Đối tượng DataReader
ó Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu ◦ Đối tượng DataAdapter ◦ Đối tượng DataTable ◦ Đối tượng DataView ◦ Đối tượng DataSet
3
Bài 1. Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu
ó Giới thiệu ó Đối tượng Connection. ó Đối tượng Command ó Đối tượng DataReader ó Sử dụng mô hình kết nối để thực hiện
các thao tác với cơ sở dữ liệu
4
22.11.2012
3
Giới thiệu ó ADO.NET cho phép làm việc ở cả hai
chế độ: ◦ Chế độ kết nối (Connected) ◦ Chế độ phi kết nối (Disconnected)
Thực hiện nhiệm vụ kết
nối đến CSDL
Thực hiện các câu lệnh SQL thao tác
với CSDL
Đón nhận kết quả trả về từ đối
tượng Command
Cầu nối giữa nguồn dữ liệu và các bảng được cached trong bộ nhớ
Kho chứa các bảng
5
Đối tượng Connection
ó Là đối tượng có nhiệm vụ thực hiện nhiệm vụ kết nối đến CSDL để các đối tượng như Command thao tác với CSDL thông qua kết nối này
Application Database
Connection
6
22.11.2012
4
Đối tượng Connection (tt)
ó Thuộc tính: ◦ ConnectionString: chuỗi kết nối đến
database ◦ State: trạng thái kết nối, thường được sử
dụng để kiểm tra kết nối thành công hay không. VD: if (con.State.ToString() =="Open" )
ó Phương thức: ◦ Open: mở kết nối ◦ Close: đóng kết nối
7
Đối tượng Connection (tt)
ó Đối tượng Connection kết nối với CSDL SqlServer: SqlDataConnection (khai báo namespace System.Data.SqlClient) ó Đối tượng Connection kết nối với CSDL
Access: OleDataConnection (khai báo namespace System.Data.OleDb) ó Khi tạo một đối tượng Connection, chúng ta
phải truyền chuỗi kết nối đến phương thức tạo dựng, hoặc gán chuỗi kết nối vào thuộc tính ConnectionString của đối tượng
8
22.11.2012
5
Đối tượng Connection (tt)
ó Tạo đối tượng Connection
9
Đối tượng Connection (tt)
ó Có thể truy xuất chuỗi kết nối lưu trong trang Web.config thông qua đối tượng WebConfigurationManager (Khai báo namespace System.Web.Configuration)
10
22.11.2012
6
Đối tượng Connection (tt)
ó Chuỗi kết nối trong Web.config
11
Đối tượng Connection (tt)
ó Sử dụng đối tượng Connection: ◦ Trước khi thực thi bất kỳ lệnh nào đối với dữ
liệu, trước hết chúng ta phải mở kết nối. ◦ Sau khi thực thi lệnh xong, chúng ta phải đóng kết nối.
◦ Ngoài ra, cần sử dụng các cơ chế xử lý ngoại lệ nếu có lỗi xảy ra ñ try…catch…finaly ñ Lệnh using: buộc kế nối phải đóng ngay cả khi có
biệt lệ xảy ra
12
22.11.2012
7
Đối tượng Connection (tt)
13
Đối tượng Connection (tt)
ó Các bước thực hiện: ◦ Tạo một Connection. ◦ Mở connection. ◦ Truyền connection cho các đối tượng
ADO.NET khác. ◦ Thực hiện các thao tác database với các đối
tượng ADO.NET này. ◦ Đóng connection.
14
22.11.2012
8
Đối tượng Connection (tt)
ó Các bước thực hiện:
15
Đối tượng Command
ó Dùng để thực hiện các câu lệnh SQL thao tác với CSDL như: Select, Insert, Update, Delete.
Application
Connection
Database Command
16
22.11.2012
9
Đối tượng Command (tt) ó Thuộc tính:
• Connection: kết nối để thực hiện lệnh • CommandText: câu lệnh cần thực hiện • CommandType: loại câu lệnh (Text, TableDirect,
StoredProcedure) • Phương thức:
• ExecuteScalar(): thực hiện câu lệnh và trả về giá trị đơn
• ExecuteNonQuery(): gọi các lệnh SQL, store, trả về số record bị tác động (Insert, Update, Delete…)
• ExecuteReader(): thực hiện câu lệnh trả về đối tượng DataReader
17
Đối tượng Command (tt)
ó Đối tượng Command dùng trong CSDL SqlServer: SqlCommand ó Đối tượng Command dùng trong CSDL
Access: OleDbCommand ó Tạo đối tượng Command
◦ Sử dụng phương thức tạo dựng ◦ Sử dụng phương thức CreateCommand của đối tượng Connection
18
22.11.2012
10
Đối tượng Command (tt)
ó Tạo đối tượng Command (tt)
19
Đối tượng Command (tt)
ó Tạo đối tượng Command (tt) ◦ Có thể thiết lập các thuộc tính cho đối tượng
Command sau khi tạo:
20
22.11.2012
11
Đối tượng Command (tt)
ó Phương thức ExecuteReader: ◦ Phương thức này trả về một tập các bản ghi,
thường được sử dụng để thực thi các câu lệnh truy vấn như Select.
◦ Kết quả có thể lưu trữ trong đối tượng DataReader
21
Đối tượng Command (tt)
ó Phương thức ExecuteScalar: ◦ Trả về một phần tử (cột đầu tiên hàng đầu
tiên) trong bảng kết quả. ◦ Thường được sử dụng thực hiện câu lệnh
truy vấn Select mà kết quả trả về chỉ có một hàng và một cột
22
22.11.2012
12
Đối tượng Command (tt)
ó Phương thức ExecuteNonQuery: ◦ Được sử dụng để thực thi các câu lệnh truy
vấn hành động: Insert, Update, Delete…
23
Đối tượng Command (tt)
ó Phương thức ExecuteNonQuery (tt):
24
22.11.2012
13
Đối tượng Command (tt)
ó Phương thức ExecuteNonQuery (tt):
25
Đối tượng Command (tt)
ó Thực thi lệnh với tham số: ◦ Câu lệnh truy vấn SQL có thể nhận giá trị
thông qua các tham số tại thời điểm thực thi ◦ Cách sử dụng: ñ Tạo tham số trong câu lệnh SQL ñ Khai báo Parameter với những thông tin chính: ñ Tên tham số ñ Kiểu dữ liệu ñ Giá trị
ñ Liên kết Parameter với Command ◦
26
22.11.2012
14
Đối tượng Command (tt)
ó Thực thi lệnh với tham số (tt): ◦
27
Đối tượng DataReader ó Là đối tượng được sử dụng để nhận kết quả trả
về từ đối tượng Command. ó Thuộc tính
• HasRow: cho biết đối tượng DataReader có chứa dữ liệu
• Phương thức: • Read(): đọc một mẫu tin • Close(): đóng • NextResult(): chuyển đến bảng tiếp theo
• Tham chiếu đến các cột trong DataReader: • Sử dụng chỉ số. (reader [0]) • Sử dụng trên trường dữ liệu. (reader[“FirstName”])
28
22.11.2012
15
Đối tượng DataReader
ó Sử dụng DataReader
29
Đối tượng DataReader
ó Sử dụng DataReader nhận về nhiều tập giá trị
30
22.11.2012
16
Sử dụng mô hình kết nối để thao tác với cơ sở dữ liệu ó Để thao tác với cơ sở dữ liệu trong mô
hình kết nối chúng ta cần sử dụng đến các đối tượng: ◦ DataConnection: Dùng để mở kết nối đến cơ
sở dữ liệu. ◦ DataCommand: Dùng để thực hiện các câu
lệnh truy vấn SQL để lấy về dữ liệu (Select) hoặc cập nhật dữ liệu (Insert, Update, Delete).
◦ DataReader: Dùng để nhận và duyệt bảng kết quả từ đối tượng Command
31
Truy vấn lấy dữ liệu ó B1. Tạo đối tượng DataConnection, và mở
kết nối đến cơ sở dữ liệu. ó B2. tạo đối tượng DataCommand gắn với đối tượng DataConnection, kết hợp câu lệnh truy vấn Select ó B3. Khai báo biến đối tượng DataReader ó B4. Thi hành phương thức ExcuteReader()
của biến đối tượng DataCommand và gán cho biến đối tượng DataReader. ó B5. Đọc và trình bày dữ liệu ó B6. Đóng và giải phóng các biến đối tượng
nếu không cần thiết.
32
22.11.2012
17
Truy vấn lấy dữ liệu
33
Truy vấn hành động trên CSDL ó B1. Khai báo đối tượng DataConnection, và mở kết
nối đến cơ sở dữ liệu. ó B2. Tạo đối tượng DataCommand gắn với biến đối
tượng DataConnection đã mở. ó B3. Gán giá trị cho thuộc tính CommandType của
biến đối tượng DataCommand ó B4. Gán câu lệnh truy vấn (insert, update, delete, gọi
store procedure…) cho thuộc tính CommandText của biến đối tượng DataCommand
ó B5. Thi hành phương thức ExcuteNonquery() của biến đối tượng DataCommand
ó B6. Đóng và giải phóng các biến đối tượng nếu không cần thiết.
34
22.11.2012
18
Truy vấn hành động trên CSDL
35
Bài 2: Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu
36
22.11.2012
19
Giới thiệu ó Cho phép thao tác với dữ liệu mà không cần duy trì
kết nối ó Ưu điểm của việc sử dụng nhóm đối tượng thuộc
mô hình phi kết nối là chúng cung cấp nhiều chức năng hơn. ◦ Lọc và sắp xếp các hàng (DataView) ◦ Thay đổi nội dung các mẫu tin (DataTable) ◦ …
ó Nhược điểm: tốc độ xử lý chậm. ó Gồm bốn đối tượng:
◦ DataAdapter ◦ DataSet ◦ DataTable ◦ DataView
37
Đối tượng DataAdapter
ó Có chức năng như một cầu nối giữa nguồn dữ liệu và các bảng được cached trong bộ nhớ (đối tượng DataSet). ó DataAdapter điền dữ liệu vào một
DataSet hay DataTable từ một nguồn dữ liệu thông qua phương thức Fill(). ó DataAdapter cập nhật dữ liệu ngược trở
lại nguồn dữ liệu thông qua phương thức Update()
38
22.11.2012
20
Đối tượng DataAdapter (tt)
ó Tạo đối tượng DataAdapter ◦ Từ một đối tượng connection ◦ Từ một chuỗi kết nối
39
Đối tượng DataAdapter (tt)
ó Sử dụng DataAdapter để truy xuất dữ liệu từ cơ sở dữ liệu
40
22.11.2012
21
Đối tượng DataAdapter (tt)
ó Sử dụng DataAdapter để cập nhật dữ liệu ◦ Có thể sử dụng DataAdapter để cập nhật, chèn
và xóa dữ liệu ◦ Sử dụng các thuộc tính InsertCommand,
DeleteCommand và UpdateCommand của đối tượng DataAdapter để cập nhật cơ sở dữ liệu từ DataSet.
◦ Các thuộc tính trên được sinh tự động khi chúng ta tạo lớp DataSet trong môi trường Visual.Net (Strongly Typed Dataset và DataAdapter)
41
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Click chuột phải trên project trong cửa sổ
solution explorer, chọn “Add New Item”, chọn “DataSet”, nhập tên lớp dataset trong ô Name
42
22.11.2012
22
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter:
43
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Cửa sổ “Create TableAdapter” wizard xuất
hiện (nếu cửa sổ này không tự động hiển thị, click chuột phải trên dataset, chọn “Add” èTable Adapter)
44
22.11.2012
23
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Chọn chuỗi kết nối đến CSDL hoặc New
Connection để tạo kết nối mới
45
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Chọn kiểu truy vấn dữ liệu
46
22.11.2012
24
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Click “Query Builder”, chọn các bảng dữ liệu
cần truy vấn
47
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Đặt tên phương thức trong ô Method name
48
22.11.2012
25
Đối tượng DataAdapter (tt)
ó Strongly Typed Dataset – DataAdapter: ◦ Sử dụng lớp Dataset:
49
Đối tượng DataAdapter (tt)
ó Thực thi truy vấn hành động bằng code ◦ Thiết lập thuộc tính SelectCommand,
InsertCommand, DeleteCommand và UpdateCommand từ đối tượng SqlCommand.
◦ Có thể sử dụng đối tượng CommandBuilder để tạo các UpdateCommand, InsertCommand và DeleteCommand.
◦ Sử dụng phương thức Update() của đối tượng SqlDataAdapter có dạng: ñ int SqlDataAdapter.Update(DataTable)
50
22.11.2012
26
Đối tượng DataAdapter (tt)
51
Đối tượng DataAdapter (tt)
52
22.11.2012
27
Đối tượng DataAdapter (tt)
53
Đối tượng DataAdapter (tt)
54
22.11.2012
28
Đối tượng DataAdapter (tt)
55
Đối tượng DataAdapter (tt)
56
22.11.2012
29
Đối tượng DataAdapter (tt)
57
Đối tượng DataTable
ó Đối tượng DataTable tiêu biểu cho một bảng cơ sở dữ liệu trong bộ nhớ. ó Thuộc tính:
• TableName: tên của bảng dữ liệu • Columns: danh sách các cột • Rows: danh sách các mẫu tin • PrimaryKey: danh sách các cột là khóa chính
• Phương thức: • NewRow(): tạo một mẫu tin mới
58
22.11.2012
30
Đối tượng DataTable (tt)
ó Các thành phần trong DataTable ◦ Mỗi phần tử hàng trong một DataTable là một
DataRow ◦ Mỗi phần tử cột trong DataTable là một
DataColumn ó DataRow:
◦ Phương thức: ñ AcceptChanges(), RejectChanges(): xác nhận hay
loại bỏ mọi sự thay đổi đến hàng trong bảng ñ Remove: đánh dấu hàng bị xóa nếu gọi
AcceptChanges
59
Đối tượng DataTable (tt) ó DataColumn:
◦ ColumnName: tên cột ◦ DataType: kiểu dữ liệu
ó Tạo và thêm dữ liệu vào DataTable: ◦ Tạo đối tượng DataTable ◦ Tạo đối tượng DataColumn, thiết lập các thuộc
tính cho đối tượng ◦ Thêm các DataColumn vào tập Columns của đối
tượng DataTable ◦ Tạo đối tượng DataRow, thiết lập giá trị cho các
ô trong DataRow ◦ Thêm đối tượng DataRow vào tập Rows của đối
tượng DataTable
60
22.11.2012
31
Đối tượng DataTable (tt)
61
Đối tượng DataTable (tt)
ó Có thể truy xuất các mẫu tin từ đối tượng DataTable bằng cách sử dụng phương thức Select() ó Khi truy xuất một mảng các mẫu tin bằng
phương thức Select(), có thể chỉ định thứ tự sắp xếp cho các mẫu tin (Ex909.aspx)
62
22.11.2012
32
Đối tượng DataTable (tt)
ó )
63
Đối tượng DataTable (tt)
64
22.11.2012
33
Đối tượng DataTable (tt)
ó Khi sửa đổi các hàng trong DataTable, DataTable sẽ duy trì cả hai bản gốc (original version) và bản đã sửa của mỗi hàng (modified version) ó Phương thức DataTable.AcceptChanges() được sử dụng để sao chép bản hiện tại của tất cả các hàng đến bản gốc tương ứng ó Phương thức DataTable.RejectChanges() được sử dụng để sao chép bản gốc của tất cả các hàng đến bản hiện tại tương ứng
65
Đối tượng DataTable (tt)
66
22.11.2012
34
Đối tượng DataView
ó Là đối tượng được sử dụng để lọc, sắp xếp dữ liệu từ DataTable ó Đối tượng DataView có hai thuộc tính
quan trọng: ◦ Sort: sắp xếp dữ liệu
dataView.Sort =“Fieldname”; ◦ RowFilter: lọc dữ liệu
dataView.RowFilter = “Alias like ‘abc%’”;
67
Đối tượng DataView (tt)
ó Tạo đối tượng DataView ◦ DataView dataView = new
DataView(dataTable); Hoặc
◦ DataView dataView = dataTable.DefaultView;
68
22.11.2012
35
Đối tượng DataView (tt)
69
Đối tượng DataSet ó Đối tượng DataSet thể hiện cho cơ sở dữ
liệu trong bộ nhớ. ó Một DataSet có thể chứa một hay nhiều đối
tượng DataTable. ó Các bảng trong DataSet có thể là dữ liệu đổ
vào từ DataAdapter (sử dụng phương thức Fill) hoặc được tạo thành từ các đối tượng DataTable. ó Có thể cập nhật dữ liệu từ các bảng này
vào cơ sở dữ liệu thông qua phương thức Update của đối tượng DataAdapter.
70
22.11.2012
36
Đối tượng DataSet (tt) ó Đặc điểm của DataSet
◦ Không kết nối với nguồn dữ liệu. ◦ Không phân biệt dữ liệu thuộc nguồn nào (SQL
Server, OLE DB, ODBC, …). ◦ Có thể lưu trữ dữ liệu từ nhiều bảng (Table),
nhiều nguồn (Data Source) khác nhau. ó Truy xuất bảng trong DataSet:
◦ dsName.Tables[index] ◦ Hoặc dsName.Tables[“DataTableName”]
ó Thêm hoặc xóa bảng bằng phương thức Add, Remove của tập Tables
71
Đối tượng DataSet (tt)
72
22.11.2012
37
Đối tượng DataSet (tt)
73
Sử dụng mô hình phi kết nối để thao tác với cơ sở dữ liệu ó Để thao tác với cơ sở dữ liệu trong mô
hình phi kết nối chúng ta cần sử dụng đến các đối tượng: ◦ DataConnection: Dùng để mở kết nối đến cơ
sở dữ liệu. (Có thể có hoặc không) ◦ DataAdapter ◦ DataSet ◦ DataTable, DataRow…
74
22.11.2012
38
Truy vấn lấy dữ liệu ó B1. Tạo đối tượng DataConnection, và mở kết
nối đến cơ sở dữ liệu. (có thể không sử dụng) ó B2. Tạo đối tượng DataAdapter gắn với đối
tượng DataConnection đã mở hoặc một chuỗi kết nối đến cơ sở dữ liệu, kết hợp với câu truy vấn select.
ó B3. Gọi phương thức Fill để điền dữ liệu lấy về vào DataSet (hoặc DataTable)
ó B4. Sử dụng tập hợp Tables của đối tượng DataSet để làm việc với dữ liệu đã lấy về.
ó B5. Đóng hoặc giải phóng các đối tượng nếu không cần thiết
75
Truy vấn lấy dữ liệu
76
22.11.2012
39
Truy vấn hành động trên CSDL ó B1. Tạo đối tượng DataConnection, và mở kết
nối đến cơ sở dữ liệu. (có thể không sử dụng). ó B2. Khai báo và tạo đối tượng DataAdapter ó B3. Thay đổi dữ liệu trên bảng dữ liệu nằm trong
DataSet. ó B4. Tạo đối tượng CommandBuilder gắn với
biến đối tượng DataAdapter. ó B5. Thi hành phương thức Update để cập nhật
sự thay đổi dữ liệu trong bảng lên cơ sở dữ liệu. ó B6. Đóng và giải phóng các biến đối tượng nếu
không cần thiết
77
Truy vấn hành động trên CSDL
78
Recommended