Tài liệu Lập trình web - Chương I: Aspnet framework – Bảo trì trạng thái ứng dụng: 1Chươ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
2Nộ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
3Giớ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
...
276 trang |
Chia sẻ: Khủng Long | Lượt xem: 1026 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Lập trình web - Chương I: Aspnet framework – Bảo trì trạng thái ứng dụng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
1Chươ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
2Nộ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
3Giớ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/2012
6
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
5Cá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
6Cá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
7Mộ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 định
nghĩa trong Global.asax được dựa trên lớp
Application
• .
14GV.
8Mộ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.
9Mộ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 trang
mặ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”/>
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:
–
• 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 web
22/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ệt
44GV.
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 trang
1. PreInit
2. Init
3. InitComplete
4. PreLoad
5. Load
6. LoadComplete
7. PreRender
8. PreRenderComplete
9. SaveStateComplete
10. 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:
–
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ượng
ProfileManager 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 (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 II
Các điều khiển chuẩn và
kiểm chứng
2
Mục 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
Nội 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
Bài 1: Các điều khiển chuẩn
• 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
Sự khác nhau giữa Server
Controls và HTML 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 các server control
lê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ẻ
trong trang .aspx hoặc file code
behind.
GV. Nguyễn Thị Mai Trang
7
Dùng 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
Dùng ở chế độ hiển thị 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">
GV. Nguyễn Thị Mai Trang
9
Dùng 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
Thiết lập thuộc tính cho
server 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
Thiết lập thuộc tính cho
server 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>
• Thiết lập thuộc tính khi thực thi
– Cú pháp : ControlID.PropertyName = Value;
Ví dụ: txtUser.Enabled = True;
12
Một số thuộc tính, phương thức,
sự kiện của server controls
Property/Method/Event Mô tả
DataBinding event Phát sinh khi control chuẩn bị
tương tác với DataSource
Enabled property Chấp nhận gt Bool chỉ định khi
nào control được enabled
EnableViewState 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
Một số thuộc tính, phương thức,
sự kiện của server controls
Property/Method/Event Mô tả
ID property Get hoặc Set nhận biết
control
TabIndex 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
Các nhóm điều khiển chuẩn
• Đ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ều khiển hiển thị dữ liệu
• Điều Khiển Label
• Điều Khiển Literal
16
Label
• 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 =“bold text”;
GV. Nguyễn Thị Mai Trang
17
Literal
• Đ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ẻ
– Điều khiển Literal không có các thuộc tính
(Properties) định dạng như Label.
18
Label và Literal
GV. Nguyễn Thị Mai Trang
19
Điều khiển nhập dữ liệu
• Điều KhiểnTextBox
• Điều khiển CheckBox
• Điều khiển RadioButton
20
TextBox
• 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
TextBox
• 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
TextBox
• 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
CheckBox
• 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
CheckBox
• 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
RadioButton
• 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ều khiển gởi trang Web đến
Server
• 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
Button
• 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
Button
GV. Nguyễn Thị Mai Trang
29
LinkButton, 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ẻ
– LinkButton: thẻ
– ImageButton: thẻ
• 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, ImageButton
GV. Nguyễn Thị Mai Trang
31
Điều khiển hiển thị hình ảnh
• Điều Khiển Image
• Điều Khiển ImageMap
32
Điều khiển Image
• Dùng để hiển thị ảnh giống với thẻ
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ều Khiển 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ều Khiển ImageMap
• Tạo các vùng ảnh
GV. Nguyễn Thị Mai Trang
35
Các điều khiển khác
• Điều Khiển Panel
• Điều Khiển HyperLink
• Điều Khiển FileUpload
• Điều Khiển Calendar
36
Điều khiển 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ều Khiển 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ều Khiển 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ều Khiển 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ều Khiển 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
Bài 2. Điều khiển kiểm chứng dữ liệu
• 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
Khái niệm kiểm chứng dữ liệu
• 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
Khái niệm kiểm chứng dữ liệu
• 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
Sử dụng các điều khiển KCDL
1.Vẽ điều khiển kiểm chứng trên web form
2.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
Sử dụng các điều khiển KCDL
5. Đư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)
• 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
RequiredFieldValidator
• 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
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
• 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
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
• 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
RegularExpressionValidator
• 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
RegularExpressionValidator
• [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
RegularExpressionValidator
• \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
RegularExpressionValidator
• 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
CustomValidator
• 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
CustomValidator
GV. Nguyễn Thị Mai Trang
59
CustomValidator
• Ở phía Client, chỉ ra các script kiểm chứng trong
thuộc tính ClientValidationFunction của
CustomValidator.
60
ValidationSummary
• 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ương 3: Ngôn ngữ PHP
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
Nội dung
• 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. Giới thiệu PHP
• Giới thiệu PHP
• Cài đặt
• Lập trình PHP
Giới thiệu PHP
• PHP (Personal Home Page) ra đời năm
1994 do phát minh của Rasmus Lerdorf
• PHP bắt đầu được sử dụng trong môi
trường chuyên nghiệp và trở thành chữ viết
tắt của Hypertext Preprocessor.
• PHP là ngôn ngữ mã nguồn mở, là kịch bản
trình chủ (server script) chạy trên phía
server (server side).
Giới thiệu PHP
• Cho phép xây dựng ứng dụng web với các
cơ 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ều
hệ đ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ôn
ngữ khác nên PHP đã nhanh chóng trở
thành một ngôn ngữ lập trình Web phổ biến
Cài đặt PHP
• Download PHP ở địa chỉ:
(phiên bản mới
nhất là 5.4.7
• Download tài liệu tham khảo :
• 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ụng
các PHP framework để xây dựng ứng dụng
web. (Zend, Prado, CakePHP,)
Cài đặt PHP
• 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
Cài đặt PHP
• 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
Cài đặt PHP
• 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
Cài đặt PHP
• Cài đặt cấu hình PHP trên IIS (tt)
Cài đặt PHP
• Cài đặt cấu hình PHP trên IIS (tt)
– Nhập các thông số như sau
Cài đặt PHP
• 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:
•
Cấu trúc và cú pháp của PHP
• 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í dụ
Cấu trúc và cú pháp của PHP
• 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âu
ghi chú
• Sử dụng /* và */ cho mỗi đoạn ghi chú
Hằng
• 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);
Hằng
• 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ụ:
Biến
• 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ụ:
Biến (tt)
• 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.
Biến (tt)
Kiểu dữ liệu
• Boolean
• Integer
• Float
• String
• Object
• Array
Kiểu dữ liệu (tt)
• 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
Kiểu dữ liệu (tt)
• 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ệu
của biến được kiểm tra là đúng.
Một số hàm toán học
• mixed max ( array $values )
mixed max ( mixed $value1,
mixed $value2 [, mixed $value3...] )
• mixed min ( array $values )
mixed min ( mixed $value1,
mixed $value2 [, mixed $value3...] )
Một số hàm toán học (tt)
Một số hàm toán học (tt)
• int count ( mixed $var [, int $mode] )
Một số hàm toán học (tt)
• 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] )
Một số hàm toán học (tt)
• float round ( float $val [, int $precision] )
– VD: numberformat.php
• float ceil ( float $value )
• float floor ( float $value )
Các toán tử
• Toán tử số học
Các toán tử (tt)
• Toán tử quan hệ
Các toán tử (tt)
• Toán tử luận lý
Các toán tử (tt)
• Toán tử gán
– ( =, +=, -=, *=, /=, %=, .=)
Cấu trúc lựa chọn
• Lệnh if / else
– if (expr)
statement
– if (expr)
statement
else
statement
Cấu trúc lựa chọn (tt)
• Lệnh if / else
– if (expr)
statement
elseif (expr)
statement
else
statement
Cấu trúc lựa chọn (tt)
• Lệnh switch
Cấu trúc lặp
• Lệnh for
for (expr1; expr2; expr3) statement
Cấu trúc lặp (tt)
• Lệnh foreach
foreach (array_expression as $value)
statement
foreach (array_expression as
$key => $value)
statement
Cấu trúc lặp (tt)
• Lệnh foreach
Cấu trúc lặp (tt)
• Lệnh foreach
Cấu trúc lặp (tt)
• Lệnh foreach
Cấu trúc lặp (tt)
• Lệnh while
– while (expr) statement
Cấu trúc lặp (tt)
• Lệnh do / while
do
statement
while (expr) ;
Hàm
• 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
Hàm (tt)
• Ví dụ
Hàm (tt)
• Hàm đệ qui (Recursive functions )
Mảng (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”) ;
Mảng (tt)
• 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”) ;
Mảng (tt)
• 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
Mảng (tt)
• Mảng một chiều
– Truy xuất các phần tử mảng
• Dùng hàm list() và each()
Mảng (tt)
• Mảng hai chiều
Mảng (tt)
• 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
Mảng (tt)
Mảng (tt)
• 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
Mảng (tt)
• 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
Mảng (tt)
Mảng (tt)
• 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
Mảng (tt)
Mảng (tt)
• 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
Truyền biến giữa các trang
• 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
Truyền biến giữa các trang (tt)
• foo.php
Truyền biến giữa các trang (tt)
• 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'];
Truyền biến giữa các trang (tt)
• Queystring.php
• Querystring_result.php
Truyền biến giữa các trang (tt)
• 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’])
{
}
Truyền biến giữa các trang (tt)
• Session.php
• Session_result.php
Truyền biến giữa các trang (tt)
• 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]]]]]] )
Truyền biến giữa các trang (tt)
• Sử dụng Cookkie
Truyền biến giữa các trang (tt)
• 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
Các thành phần form
• Cấu trúc Form
– Bắt đầu và kết thúc bởi cặp thẻ
• Các thuộc tính:
– action, method, enctype
• Các thành phần chính của form:
– textarea, select, input
Các thành phần form (tt)
• Cấu trúc Form
– Nằm trong cặp thẻ
• Các thuộc tính:
– action, method, enctype
• Các thành phần chính của form:
– textarea, select, input
Các thuộc tính Form
• 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
Các thành phần khác
• Textarea: thành phần hiển thị văn bản
– Bắt đầu và kết thúc bởi và
– Các thuộc tính
• Name
• Rows
• Cols
• Wrap: (off, vitual, physical)
Các thành phần khác (tt)
• Select: thành phần cho phép hiển thị danh sách
– Bắt đầu và kết thúc bởi và
– Các thuộc tính
• Name
• Size
• Multiple
– Thẻ có thể chèn trong thẻ select, gồm
các thuộc tính
• Selected
• Value
• Disable
Các thành phần khác (tt)
• input:
– Bắt đầu và kết thúc bởi và
– 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
Các thành phần khác (tt)
• Input (tt)
– Kiểu text: ô nhập liệu
•
– Kiểu submit: nút nhấn
•
Xử lý Form
• 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ến
toàn cục $_POST.
• Vd: $content = $_POST [‘txtContent’];
• Lệnh: print_r ($_POST): hiển thị toàn bộ nội
dung của mảng $_POST.
Xử lý Form
• Ví dụ: trang action.html
• Trang action.php
Xử lý Form
• Ví dụ: trang form.php
• Trang submit.php
Xử lý Form
• Form.htlm
• Form.php
11
Chương 4
Tổng quan về truy cập
cơ sở dữ liệu
2
Mục tiê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ập
CSDL
23
Nội dung
• Công nghệ ADO.NET.
• SQL Server 2005 Express
• Điều khiển DataBound.
• Điều khiển DataSource.
• Điều khiển SqlDataSource
4
1. Công nghệ ADO.NET
• ADO.NET (Active Data Objects .NET) là
công nghệ truy cập cơ sở dữ liệu của
Microsoft
• 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ủa
ADO, đây là một công nghệ hoàn toàn mới
(như ASP.NET và ASP)
35
1. Công nghệ ADO.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
6
Kiến trúc của ADO.NET
47
Mục tiêu của ADO.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ông
qua 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
8
Ưu điểm của ADO.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 quan
tâ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)
59
Các namespace cơ bản của ADO.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
10
Cấu trúc của ADO.NET
611
Các đối tượng Connection
• 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;
12
2. 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
• Microsoft SQL Server 2005 Express được
xem như bản thu gọn của phiên bản SQL
Server 2005, do đó phần mềm này chỉ giới
hạn trong một số tính năng
713
SQL Server 2005 Express Management
• Có thể sử dụng một trong ba công cụ để tạo
cơ 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
– Sử dụng giao diện dòng lệnh SQLCMD –S
.\SQLExpress. Kế đến là nhập các câu lệnh
SQL tại dấu nhắc
14
Server database
• Cơ sở dữ liệu được lưu trữ trên Server của
hệ quản trị cơ sở dữ liệu
815
Server database (tt)
• 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
16
Local 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, di
chuyển thư mục website (file CSDL nằm trong
thư mục) thay vì phải backup, restore như đối
với server database
– Trong ứng dụng sử dụng CSDL phức tạp, kết
hợp với cơ chế bảo mật của ASP.NET, server
database thích hợp hơn
917
Điều khiển DataBound
• Các điều khiển DataBound thường được sử
dụng để tạo ra giao diện người dùng khi truy
cậ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
18
Điều khiển danh sách
• Đượ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ột
lớp cơ sở ListControl. Do đó, chúng có
chung một tập các thuộc tính và phương
thức
10
19
Điều khiển phân cấp
• Đ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ồng
nhau, 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
20
Điều khiển dạng bảng
• 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ệu
hay 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
21
4. Điều khiển DataSource
• Một điều khiển DataBound (GridView,
DataList, BulletedList, ListBox,
CheckBoxList, ) được gắn với một điều
khiển DataSource.
• Có năm loại điều khiển DataSource
– SqlDataSource
– AccessDataSource
– SiteMapDataSource
– XMLDatasource
– ObjectDataSoure
22
Điều Khiển SqlDataSource (tt)
• Đ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ối
và có thể thực thi các lệnh trên cơ sở dữ liệu
SQL
12
23
Điều Khiển SqlDataSource (tt)
• Điều khiển SqlDataSource sử dụng các đối
tượng ADO.NET như DataSet, DataReader
và Command, cho phép sử dụng các đối
tượng ADO.NET qua thao tác trực quan
không phải lập trình
• Được sử dụng kết hợp với các điều khiển
GridView, FormView để hiển thị và cập nhật
dữ liệu, thực thi các lệnh tác động đến cơ sở
dữ liệu trong lập trình
24
Kết nối database
• Kéo biểu tượng SQLDataSource từ cửa sổ
Toolbox lên WebForm
13
25
Kết nối database (tt)
• Kết nối mặc định là Microsoft SQLServer, ta
có thể chọn một data source khác bằng cách
click vào nút Change..
26
Kết nối với SQL Server
14
27
Kết nối với local database
• Chọn một loại data source (Access file, SQL
Server file,.
28
Kết nối với local database (tt)
• Click nút Browse để
chọn file database.
• Chọn Test Connection
để kiểm tra kết nối
• Chọn OK
15
29
Chuỗi kết nối
• 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"
30
Chuỗi kết nối (tt)
• 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
31
Kết Nối Với Cơ Sở Dữ Liệu Khác
• Có thể kết nối với cơ sở dữ liệu khác như
Microsoft Access bằng điều khiển
SqlDataSource
• Khi kết nối với bất kỳ cơ sở dữ liệu nào khác
với SQL Server, ta cần sửa lại thuộc tính
ProviderName của điều khiển
SqlDataSource.
– Ví dụ:
ProviderName="System.Data.OleDb"
32
Chứa chuỗi kết nối trong tập tin
Web.Config
• Không nên chứa chuỗi kết nối trong trang
Web 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 trong
Website
• Vì các lý do trên, chúng ta phải đặt chuỗi kết
nối trong tập tin Web.Config.
17
33
Chứa chuỗi kết nối trong tập tin
Web.Config (tt)
• Chúng ta có thể thêm nhiều chuỗi kết nối vào
tag connectionStrings trong trang
Web.config:
34
Chứa chuỗi kết nối trong tập tin
Web.Config (tt)
• 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 trong
tất cả ứng dụng chạy trên server của chúng
ta. Tập tin Web.Config gốc được đặt tại:
C:\WINDOWS\Microsoft.NET\Framework\[v
ersion]\CONFIG
18
35
Sử dụngđiều khiển SqlDataSource
36
Sử dụngđiều khiển SqlDataSource(tt)
• Mã lệnh trên trang giao diện
19
37
Sử dụngđiều khiển SqlDataSource(tt)
• Có thể sử dụng SqlDataSource và tham số
38
Sử dụngđiều khiển SqlDataSource(tt)
• Có thể sử dụng SqlDataSource và
Request.Form
20
39
Sử dụngđiều khiển SqlDataSource(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;
11
Điều khiển danh sách
và phân cấp
Lập trình Web – Chương 5
2
Mục tiêu
nSau 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 site
n 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
2Nội dung
nBài 1: Điều khiển danh sách
nBài 2: Điều khiển phân cấp
3
4
Bài 1: Điều khiển danh sách
n Giới thiệu
n 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ách
n Thuộc tính AutoPostBack.
n Các điều khiển danh sách
35
Giới thiệu
6
Giới thiệu
47
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)
59
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ách
n Value: giá trị truy xuất phần tử, thường chứa
giá trị khóa của bảng dữ liệu
n 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 check
n ListBox: phần tử được tô đậm
n ComboBox: phần tử hiển thị
n BulletedList: không sử dụng
611
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ệu
n Khai báo trên giao diện
713
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)
815
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)
917
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ọn
n 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ọn
n 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 Items
n Add: thêm phần tử vào cuối danh sách
n Insert: thêm phần tử vào danh sách tại vị trí
chỉ định
n 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 Items
n 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ề server
nMuố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 = True
n 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 DropDownList
nTạ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 DropDownList
nĐ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 box
nCác phần tử có thể được
bố trí theo hướng ngang hay dọc
nCho phép chọn nhiều phần tử
28
Điều khiển CheckBoxList (tt)
nMột số thuộc tính
n RepeatColumns: số cột
n RepeatDirection: Hướng trình bày dữ liệu
n 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 RadioButton
nChỉ cho phép chọn một phần tử tại mỗi
thời điểm
nCá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 HyperLink
nĐ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ính
n BulletStyle: Kiểu của các kí hiệu
n DisplayMode
n Text
n HyperLink
n LinkButton
32
Bài 2. Điều khiển phân cấp
nGiới thiệu
nMenu
nTreeView
17
33
Giới thiệu
nĐ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ấp
nHai điều khiển thường được sử dụng
nMenu: Hiển thị các phần tử dữ liệu trong
một menu tĩnh hoặc động
nTreeView: Hiển thị các phần tử dữ liệu
trong cấu trúc cây
nCá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
item
nMỗ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ính
n ImageUrl: ảnh hiển thị trên phần tử
n NavigateUrl: địa chỉ URL trang liên kết đến
n 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ọn
n Tooltip
nBiến cố mặc định: MenuItemClick
n 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à MultiView
nCó 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 TabPage
n Điều khiển Menu hiển thị các tab
n Điều khiển MultiView hiển thị nội dung trên
mỗi tab
n 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 XmlDataSource
nVí 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
ObjectDataSource
nChủ 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 Orientation
n StaticHoverStyle
n StaticMenuItemStyle
n StaticSelectedStyle
nCó thể sử dụng chức năng AutoFormat
26
51
Điều khiển TreeView
nĐ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ị CheckBox
nThiết lập giá trị cho thuộc tính
ShowCheckBoxes.
nAll
nLeaf
nNone
nParent
nRoot
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ư menu
nĐịnh dạng TreeView: thông qua các thuộc
tính
n ExpandDepth
n ToolTip
n HoverNodeStyle
n LeafNodeStyle
n NodeStyle
n ParentNodeStyle
n RootNodeStyle
n SelectedNodeStyle
58
11/1/2012
1
Chương 6
ĐIỀU KHIỂN
DẠ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ển
GridView.
◦ 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ải
vào GridView và chọn Show Smart
Tag)
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ệu
tươ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ằng
code
◦ 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ột
nguồ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ất
kỳ 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ển
GridView thứ hai hiển thị danh sách của
các tựa phim thuộc loại đã chọn được tìm
thấ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ấp
các giá trị phân biệt tương ứng với các
hàng đó cho thuộc tính DataKeyNames
củ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 được
phân cách bằng dấu phẩy) nào đó được
sử 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à LastName
là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ẽ được
hiể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ứa
GridView đượ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ính
EnableSortingAndPagingCallbacks =
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ác
mẫ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ập
thuộc tính AllowPaging = True
Vd: 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ủa
GridView 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ác
tham 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ển
thị 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ển
DataList, chúng ta phải cung cấp cho
điều khiển này thành phần
ItemTemplate.
Nội dung của ItemTemplate sẽ được
hiển thị cho mỗi phần tử của dữ liệu
nguồ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 trong
dấu phân cách
◦ 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ụ:
sẽ hiển thị giá trị của trường BoxOfficeTotals trong
mẫ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
36
11/1/2012
19
Hiển Thị Header Và Footer
HeaderTemplate và
FooterTemplate trong điều khiển
DataList dùng để hiển thị tiêu đề đầu
và 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à FooterTemplate
chứ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ển
DataList thành một bảng có nhiều cột,
trong đó mỗi phần tử dữ liệu được chứa
trong 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ác
sự 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ằng
cá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 danh
sách được phân cách bằng dấu phẩy (a,
b, c, d, ) và dạng danh sách kiểu
XML,
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ạo
ItemTemplate 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
◦ FooterTemplate
VD: 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ột
phầ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ạng
bảng.
◦ FormView: sử dụng template để tạo giao diện
người dùng tùy ý
Điều khiển DetailsView thường được
dù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ập
trì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ới
thuộ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ính
AutoGenerateEditButton = 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ính
AutoGenerateInsertButton= True
Xóa dữ liệu: thiết lập thuộc tính
AutoGenerateDeleteButton =
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óa
cá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
trycatchfinaly
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
trycatchfinaly
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ác file đính kèm theo tài liệu này:
- tailieu.pdf