Khi ta đã có một Recordset, đểhiển thịtruy xuất tới mỗi Recordset trong đó ta có thể
sửdụng các phương thức duyệt như: MoveFirst, MoveLast, MoveNext, MovePrevious
sẽõ lấy được nội dung của record đầu tiên, cuối cùng, kếtiếp hay record phía trước.
Khi sửdụng các phương thức đểdịch chuyển các vịtrí không xác định. Nếu record
hiện hành là record là record cuối cùng trong Recordset thì khi gọi phương thức
MoveNext thì sẽgây ra lỗi. Đểtránh trường hợp này thì ta sửdụng các property của
Recordset nhưBOF, EOF đểxác định record hiện hành là đầu tiên hay là cuối cùng.
Các property này có ý nghĩa nhưsau:
BOF property có giá trịTRUE nghĩa là con trỏ đang ởvịtrí đầu Recordset, khi
Recordset mới được mởthì BOF luôn có giá trịnày.
EOF property có giá trịTRUE nghĩa là con trỏ đang ởvịtrí cuối cùng của Recordset.
Nếu không có record nào trong Recordset thì cảBOF lẫn EOF đều là TRUE.
48 trang |
Chia sẻ: aloso | Lượt xem: 2090 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình ASP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HTML Document
This is an HTML Document
Khi đó browser sẽ hiển thị trang nhận được như một trang văn bản bình thường chứ
không phải là một trang HTML.
Ví dụ 2: để hiển thị trang trên Web browser làmột trang HTML, bạn thiết lập
ContentType property thành “text/HTML”
HTML Document
This is an HTML
III.6.6 Mã trạng thái
Status property chỉ định giá trị của dòng trạng thái trả về bởi server trong một đáp ứng
HTTP, property này không sửa đổi tiêu đề. Giá trị các trạng thái được định nghĩa trong
đặc tả HTTP.
Cú pháp:
Response.Status = StatusDescription
Tham số
StatusDescription Một chuỗi gồm có 3 chữ số cho biết mã trạng thái.
Ví dụ: trả về mã trạng thái 401 Not Authorized nếu ai đó truy tìm trang ASP trong
ngày Wednesday
16
<%
If WEEKDAY(WEEKDAY(DATE))=“Wednesday” Then
Response. Status=“401 Not Authorized” Response. End
Else
%>
Not Wednesday
Today is not Wednesday.
III. 7. Đối tượng Server
Đối tượng server cung cấp truy cập tới các phương thức và đặc tính (property) trên
server. Hầu hết các phương thức và đặc tính (property) server như là các chức năng
tiện ích.
Cú pháp
Server.property|method
Properties
ScriptTimeout Khoảng thời gian mà một script có thểchạy trước khi hết thời gian
(time out).
Methods
CreateObject Tạo một thực thể (instance) của một đối tượng hoặc thành phần
server.
HTMLEncode Mã hóa chuỗi thành dạng HTML.
MapPath Ánh xạ đường dẫn ảo, đường dẫn tuyệt đối hay tương đối trên server hiện
hành vào một đường dẫn vật lý.
URLEncode Mã hóa chuỗi kí tự thành dạng URL.
III. 7. 1 ScriptTimeout
ScriptTimeout property chỉ định khoảng thời gian tối đa một script có thể chạy trước
khi nó được kết thúc. Khoảng thời gian này sẽ không ảnh hưởng trong khi đang xử lý
một thành phần server.
Cú pháp
Server.ScriptTimeout = NumSeconds
Các tham số
NumSeconds Chỉ định số giây tối đa mà một script có thể chạy trước khi kết thúc
nó. Giá trị mặc định là 90 giây.
Ghi chú: Bạn không thể thiết lập giá trị nhỏ hơn giá trị chỉ định.
Ví dụ: trong một số trường hợp, bạn muốn thi hành một đoạn script mà thời gian của
nó dài hơn 90 giây mà không muốn chỉ một phần của đoạn script được hiển thị thì khi
đó ta có thể sử dụng ScriptTimeout property để thực thi đoạn script đó.
17
ScriptTimeOut Example
<%
For i=1 To 10000
Response.Write i & “” Next
%>
III.7.2 CreateObject
Phương thức CreateObject tạo một thực thể (instance) của một thành phần server để
có thể sử dụng các phương thức và truy cập các property của thành phần đó.
Cú pháp
Server.CreateObject( progID )
Thamsố
progID Chỉ định kiểu đối tượng cần tạo.
Ví dụ: để xem một Web browser có hỗ trợ cookie, frames, tables ta sử dụng một trong
các thành phần cung cấp cho ASP là thành phần Browser Capabilities.
CreateObject Example
<%
‘tạo thực thể của thành phần
Set objBrowser= Server.CreateObject("MSWC. BrowserType")
%>
‘sử dụng các property
Your browser has the properties:
Cookies =
Tables =
Frames =
Ghi chú:
Mặc định, các đối tượng tạo bởi phương thức Server.CreateObject có page scope
(phạm vi trang) nghĩa là server tự động hủy bỏ chúng khi server xử lý xong trang ASP
hiện hành.
Để tạo một đối tượng với phạm vi là session hay application, bạn có thể sử dụng thẻ
và thiết lập thuộc tính SCOPE cho SESSION hoặc APPLICATION, hoặc
là lưu trữ đối tượng trong biến session hoặc application.
Tạo thành phần với Session scope (phạm vi session)
Một đối tượng session-scope được tạo ra cho mỗi session mới trong một ứng dụng và
được giải phóng khi session kết thúc. Do đó, có một đối tượng trên session hoạt động.
18
Biến session có thể được sử dụng mà một user yêu cầu. Để tạo một đối tượng session
scope, bạn có thểsử dụng thẻ trong tập tin Global.asa hoặc là sử dụng
phương thức Server.CreateObject trên trang ASP.
Ví dụ 1: sử dụng phương thức Server.CreateObject
Ví dụ 2: sử dụng thẻ trong tập tin Global.asa
<OBJECT RUNAT=Server SCOPE=Session ID=objAd
PROGID="MSWC.adrotator">
Tạo thành phần với Application scope (phạm vi Application)
Một đối tượng application-scope object là một thực thể đơn của một đối tượng được
tạo ra khi ứng dụng bắt đầu. Đối tượng này được chia sẽ bởi tất cả các gien yêu cầu.
Ví dụ 1: sử dụng phương thức Server.CreateObject
Ví dụ 2: sử dụng thẻ trong tập tin Global.asa
<OBJECT RUNAT=Server SCOPE=Application ID=objAd
PROGID="MSWC.adrotator">
Bạn không thể tạo một thực thể (instance) có tên trùng với các đối tượng có sẵn.
Ví dụ:
III.7.3 HTMLEncode
Phương thức HTMLEncode dùng để mã hóa một chuỗi thành dạng HTML.
Cú pháp
Server.HTMLEncode( string )
Tham số:
String: Chuỗi để mã hóa.
Ví dụ:
HTMLEncode Example
The bold tag "
Response.Write “”
Response.Write Server.HTMLEncode("The bold tag ")
%>
kết quả hiển thị là:
The bold tag
<B>The bold tag </B>
19
III.7 4 MapPath
Phương thức MapPath ánh xạ một đường dẫn tương đối hoặc ảo tới một thư mục vật lí
trên server
Cú pháp
Server.MapPath( Path )
Tham số
Path Chỉ định đường dẫ n tương đối hoặc ảo ánh xạ thành một thư mục vật lý. Nếu
Path bắt đầu với 1 forward (/) hoặc backward slash hay (\) thì phương thức MapPath
trả về một đường dẫn nếu Path là một đường dẫn ảo đầy đủ. Nếu Path không bắt đầu
với một slash (/ hoặc\ ), phương thức MapPath trả về một đường dẫn tương đối tới thư
mục của tập tin .asp đang thực thi.
Ví dụ: tập tin data.txt được định vị trong thư mục, C:\Inetpub\Wwwroot\Script, như là
tập tin test.asp chứa đoạn script sau. Thư mục C:\Inetpub\Wwwroot thì được thiết lập
như là thư mục chủ của server.
Đoạn script sau sử dụng biến server là PATH_INFO để ánh xạ đường dẫn vật lý của
tập tin hiện hành.
kết quả là: C:\inetpub\wwwroot\script\test.asp
Nếu không bắt đầu với ký tự slash (/ hoặc \) thì chúng được ánh xạ tương đối tới thư
mục hiện hành, trong trường hợp này là C:\Inetpub\Wwwroot\Script.
kết quả là: c:\inetpub\wwwroot\script\data.txt
c:\inetpub\wwwroot\script\script\data.txt
III.7.5 Mã hóa một chuỗi query
Phương thức ULREncode mã hóa một chuỗi thành dạng URL.
Ví dụ, tất cả các khoảng trắng được chuyển đổi thành dấu cộng.
Cú pháp
Server.URLEncode( string )
Các thamsố
String Chuỗi để mã hóa.
Ví dụ 1:
") %>
khi đó kết quả mã hóa là: The+paragraph+tag%3A+%3CP%3E
Ví dụ 2:
khi đó kết quả mã hóa là:
http%3A%2F%2Fwww%2Emicrosoft%2Ecom
Ứng dụng cơ bản ASP gồm có một thư mục ảo trên server và tất cả tài liệu và tập tin
mà nó ở trong thư mục ảo.
20
Khi sử dụng những ứng dụng cơ bản của ASP bạn có thể sử dụng các loại đối tượng
sau:
Application state: tất cả thông tin gắn liền với một ứng dụng có thể được dùng cho
tất cả những user của một ứng dụng.
Session state: những thông tin thì chỉ có thể được dùng cho một user.
III. 8. Đối tượng Session
Đối tượng Session được sử dụng để lưu trữ và tìm lại thông tin về một user session.
Các giá trị lưu trữ trong đối tượng Session không bị loại bỏ đi khi user di chuyển từ
trang này sang trang khác trong ứng dụng, Web server tự động tạo ra một đối tượng
Session khi một trang Web trong ứng dụng được yêu cầu bởi một user chưa có
session. Server hủy bỏ đối tượng Session khi nó hết thời gian hay được hủy bỏ. Thực
tế, một Session chỉ thuộc về một user.
Dữ liệu Session thường gắn liền với một user, nó quản lý các thông tin về user đang sử
dụng một ứng dụng.
Cú pháp
Session.collection|property|method
Collections
Contents Chứa các mục (item) mà bạn thêm vào session với các lệnh script.
Properties
SessionID Trả về định danh session đối với user.
Timeout Khoảng thời gian đối với các session trong ud.
Methods
Abandon Hủy bỏ một đối tượng Session và giải phóng tài nguyên của nó.
Events
Se_OnStart Xảy ra khi người sử dụng đầu tiên yêu cầu một trang trong một chương
trình ud
Se_OnEnd Xảy ra khi session kết thúc
III.8.1. Lưu trữ thông tin Session
Nếu bạn cần lưu trữ dữ liệu trong đối tượng Session thì lưu trữ trong một collection
của đối tượng Session. Thông tin lưu trữ trong đối tượng Session thì có giá trị thông
qua session và có session scope.
Ví dụ: lưu trữ dữ liệu trong 2 biến của đối tượng Session
Session Example
<%
Session("Name") = "John"
Session("age") = 20
%>
21
Để truy tìm lại thông tin từ đối tượng Session, truy cập tên biến.
Ví dụ: hiển thị giá trị hiện hành của Session("Name") và Session("age")
Session Example
<%
Response.Write Session("Name") & “”
Response.Write Session("age") & “”
%>
Quản lý các session
Bắt đầu và kết thúc Session
Một Session có thể bắt đầu bằng 3 cách:
User muốn yêu cầu một URL được định nghĩa trong tập tin.asp và tập
tin Global.asa cho ứng dụng bao gồm cả thủ tục Session_OnStart
User lưu trữ giá trị trong đối tượng Session
User yêu cầu một tập tin asp trong một trình ứng dụng và tập tin
Global.asa của ứng dụng sử dụng thẻ để khởi tạo một đối tượng với
session scope.
Một session tự động kết thúc nếu user không có yêu cầu hoặc refresh một trang trong
một ứng dụng trong một khoảng thời gian. Giá trị này mặc định là 20 phút. Bạn có thể
thay đổi giá trị mặc định cho một ứng dụng bằng cách thiết lập Session Timeout
property.
Ví dụ: đặt lại khoảng thời gian là 40 phút.
Ngoài ra, bạn cũng có thể kết thúc một session với phương thức Abandon của đối
tượng Session. Ví dụ:
III. 8. 2. Nhận dạng một Session
ASP gán mỗi user session một định danh duy nhất. Mỗi session có một định danh duy
nhất được phát sinh bở i server khi session được tạo ra. Để tìm lại session ID, sử dụng
SessionID property của đối tượng Session.
Cú pháp
Session.SessionID
Ví dụ:
SessionID Example
22
Your session ID is:
III.8.3. Timeout
Timeout chỉ định khoảng thời gian đã gán đối tượng Session cho ứng dụng (tính bằng
phút). Nếu người sử dụng không refresh (làm tươi) hoặc yêu cầu một trang trong một
khoảng thời gian, session kết thúc.
Cú pháp
Session.Timeout [ = nMinutes]
Tham số
nMinutes Chỉ định số phút mà một session có thể vẫn còn trước khi server kết thúc
nó một cách tự động, mặc định là 20 phút.
Ví dụ: hiển thị Timeout property và đặt lại giá trị Timeout mới.
Timeout Example
Timeout=
Your new time out is:
Lưu ý: Bạn không thể đặt lại khoảng thời gian nhỏ hơn giá trị mặc định.
III.8.4. Các sự kiện Session
Đối tượng Session có 2 sự kiện: Session_OnEnd được kích khởi khi một session bắt
đầu và Session_OnStart được kích khởi khi một session kết thúc. Cả 2 sự kiện này
phải được định vị trong tập tin Global.asa. Nó chứa toàn bộ thông tin về ứng dụng
Web site của bạn. Tập tin Global.asa có cấu trúc sau:
Sub Session_OnEnd
End Sub
Sub Session_OnStart
End Sub
Tham số
ScriptLanguage Chỉ định ngôn ngữ scripting sử dụng để viết các script sự kiện. Nó
có thể là bất kỳ ngôn ngữ scripting được hỗ trợ như là VBScript hoặc JScript.
Ghi chú:
Bạn không thể sử dụng các thẻ HTML hoặc phương thức Response.Write bên trong
tập tin Global.asa.
Bạn không thể gọi phương thức MapPath trong đoạn script Session_OnEnd.
23
Bạn nên chú ý rằng bất kỳ script sự kiện Session_OnStart nào theo sau là một lời gọi
tới phương thức Redirect thì không được thực thi. Vì thế, bạn nên gọi phương thức
Redirect sau cùng trong script sự kiện của bạn.
Ví dụ như:
Sub Session_OnStart
' đoạn script khởi tạo Session
Response.Redirect "http:/server/app/StartHere.asp"
End sub
Tuy nhiên, bạn không thể lưu trữ một đối tượng có sẵn trong đối tượng Session.
Ví dụ như:
<%
Set Session("var1") = Session
Set Session("var2") = Request
Set Session("var3") = Response
Set Session("var4") = Server
Set Session("var5") = Application
%>
Bạn có thể sử dụng đối tượng session để thiết lập những đối tượng hoặc biến có
session scope. Scope là sự mở rộng mà nó là 1 đối tượng thành phần hoặc biến có giá
trịtrong ASP. Một biến mà có session scope thì nó chỉ có thể bên trong session đó.
III.8.5. Đối tượng Application
Đối tượng Application dùng để chia sẻ thông tin giữa tất cả người sử dụng của một
ứng dụng. Một ứng dụng trên ASP được định nghĩa như toàn bộ các tập tin .asp trong
một thư mục ảo và các thư mục con của nó. Một số đặc điểm của ứng dụng ASP:
Dữ liệu có thể được chia sẻ giữa các trang trong ứng dụng.
Một thực thể của một đối tượng có thể được chia sẻ giữa các trang trong ứng dụng.
Dừng một ứng dụng mà không ảnh hưởng tới các ứng dụng khác.
Cú pháp
Application.method
Collections
Contents Chứa tất cả các mục đã được thêm vào đối tượng Application thông qua
các lệnh script.
Methods
Lock Ngăn cấm các client khác sửa đổi đặc tính đối tượng Application.
Unlock Cho phép các client khác sửa đổi đặc tính đối tượng Application.
Events
Application_OnEnd Xảy ra khi ứng dụng kết thúc (ví dụ khi ngừng web server).
24
Application_OnStart Xảy ra khi một trang trong ứng dụng lần đầu được tham
khảo đến.
III.8.5.1. Sử dụng phương thức Lock vàUnlock
Để ngăn cấm giá trị các biến lưu trữ trong đối tượng Application có thể bị hư khi có 2
client cố gắng truy cập dữ liệu cùng một lúc thì chúng ta có thể sử dụng phương thức
Lock và Unlock. Khi phương thức đang Lock diễn tiến thì không có các đoạn script
khác cố gắng thay đổi thông tin lưu trữ trong đối tượng Application cho đến khi
phương thức Unlock được gọi.
Cú pháp
Application.Lock
Application.Unlock
Ví dụ: sử dụng biến ứng dụng NumVisits để lưu trữ số lần một trang cụ thể đã được
truy cập. Phương thức Lock được gọi để chỉ có client hiện hành có thể truy cập hoặc
thay đổi NumVisits. Sau đó gọi phương thức Unlock cho phép những người sử dụng
khác truy cập đối tượng Application.
<% Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>
This application page has been visited
times!
III.8.5.2. Các sự kiện Application
Giống như đối tượng Session, đối tượng Application cù ng có 2 sự kiện: Sự kiện
Application_OnStart xảy ra khi một ứng dụng ASP bắt đầu và trước sự kiện
Session_OnStart, sự kiện Application_OnEnd xảy ra khi ứng dụng kết thúc và sau sự
kiện Session_OnEnd.
Cú pháp
Sub Application_OnEnd
End Sub
Sub Application_OnStart
End Sub
Tham số
ScriptLanguage Chỉ định ngôn ngữ scripting sử dụng đểviết các script sự kiện. Nó
có thể là bất kỳ ngôn ngữ scripting được hỗ trợ như là VBScript hoặc JScript.
Ghi chú
Bạn không thể gọi phương thức MapPath trong đoạn script Application_OnEnd.
25
Ví dụ: hiển thị thông tin cho mỗi user của ứng dụng xem khi vào ứng dụng bằng cách
sử dụng sự kiện Application_OnStart, sau đó cho phép người sử dụng sửa đổi lại
thông tin.
Sub Application _OnStart
Application (“yourname” )= “Unknow”
Application (“occuption” )= “Unknow”
End Sub
---Display.asp---
‘hiển thị thông tin để user truy cập tập tin Display.asp có thể xem
Thank you,
You are
---Change.asp---
‘ thay đổi giá trị mới và nhấn Send để thay đổi
Please enter your name:
Please choose your occupation:
Studen
Teacher
Engineer
---Result.asp---
‘đặt lại giá trị nhận được từ user trong tập tin Change.asp và chuyển hướng kết nối
user tới tập tin Display.asp để xem giá trị mới.
<%
If Not IsEmpty(Request.Form(“ newmsg” )) then
Application.Lock
Application(“yourname”) = Request. QueryString(“name”)
Application(“your_occup”) = Request. QueryString(“occup” )
Application.UnLock
26
End If
Response.Redirect “Display.asp”
%>
Bạn không thể lưu trữ một đối tượng có sẵn trong đối tượng Application.
Ví dụ như:
<%
Set Application("var1") = Session
Set Application("var2") = Request
Set Application("var3") = Response
Set Application("var4") = Server
Set Application("var5") = Application
%>
VI. CÁC THÀNH PHẦN (COMPONENT) CỦA ASP
Ngoài các đối tượng cơ bản có sẵn trong môi trường ASP, ASP việc tạo các trang Web
động bằng ASP còn được trợ giúp nhờ một số thư viện các đối tượng (Active X
Component) của ActiveX Server. Các thành phần được thiết kế để chạy trên Web
Server như một ứng dụng Web cơ sở hợp thành các gói nhỏ đặc trưng chung là động.
Mỗi thành phần được sử dụng cho một công việc chuyên biệt nhiệm cho là một thư
viện các lớp (hay đối tượng), được thiết kế ở dạng Automation Server, thực hiện một
nhóm công việc chung nhất cho một thao tác nào đó, chẳng hạn như truy xuất
database, truy xuất file… vì thế người phát triển ứng dụng Web bằng ASP khộng cần
phải tạo lại các đặc tính này.
Bạn có thể tạo động, tương tác với các trang Web bằng cách sử dụng các thành phần
server đã được included với Active Server Pages (ASP) trong các đoạn script của bạn.
Thành phần File Access
VI.1. Đối tượng FileSystemObject
Thành phần File Access sử dụng đối tượng FileSystemObject và TextStream để khôi
phục lại và sửa đổi thông tin lưu trữ trong file trên server.
Đối tượng FileSystemObject cung cấp thao tác các tập tin văn bản từ bên trong đoạn
mã của chúng ta. Chúng ta có thể tạo một thực thể của đối tượng FileSystemObject
bằng cách sử dụng đoạn script sau:
Set objFSO=CreateObject(“Scripting.FileSystemObject”)
Mỗi khi chúng ta có một đối tượng FileSystemObject, chúng ta tạo đối tượng
TextStream bằng cách sử dụng các phương thức của FileSystemObject
VI 1.1 Phương thức CreateTextFile
Phương thức CreateTextFile tạo một file văn bản mới hoặc viết đè lên một file đã tồn
tại. Phương thức này trả về một đối tượng TextStream mà chúng ta có thể sử dụng để
27
đọc file hoặc ghi vào file. Trước tiên chúng ta tạo một đối tượng FileSystemObject,
sau đó sử dụng đối tượng này để tạo đối tượng TextStream.
Cú pháp:
[object. ]CreateTextFile(filename[, overwrite])
Các tham số:
Object Tên của một đối tượng FileSystemObject
Filename Đường dẫn và tên file chúng ta tạo ra hoặc ghi lên
Overwrite TRUE ghi đè lên một file đã tồn tại, ngược lại là FALSE
Ví dụ: tạo một file mới và ghi dữ liệu vào file.txt
<%
Set objFSO=Server.CreateObject(“Scripting.FileSystemObject”)
Set objNewFile=obj.CreateTextFile(“C:\MyFile\file.txt”, FALSE)
objNewFile.Write(“Hello”)
objNewFile.WriteLine(“Welcom”)
objNewFile.Close
%>
VI.1.2. Phương thức OpenTextFile:
Phương thức OpenTextFile mở một file văn bản đã tồn tại. Phương thức này trả về
một đối tượng TextStream mà chúng ta có thể sử dụng để đọc file hoặc thêm dữ liệu
vào file. Trước tiên, chúng ta tạo một đối tượng FileSystemObject sau đó sử dụng đối
tượng này để tạo đối tượng TextStream.
Set objFSO=CreateObject(“Scripting.FileSystemObject”)
Set objNewFile=obj.OpenTextFile (“C:\TextFile\Myfile.txt”)
Cú pháp:
[object. ]OpenTextFile (filename[, iomode[, create]])
Các tham số:
Object Tên của một đối tượng FileSystemObject.
Filename Đường dẫn và tên tập tin muốn mở.
Iomode ForReading hoặc ForAppending. Mặc định là ForReading.
Create TRUE tạo một file mới hoặc là FALSE nếu file đã tồn tại rồi.
Ví dụ1: đọc một file sử dụng phương thức ReadLine
ReadingFile.asp
<%
Set objFSO=Server.CreateObject(“Scripting.FileSystemObject”)
Set objTextFile=obj.OpenTextFile(“C:\MyFile\file. txt”, 1, FALSE )
28
WHILE NOT objTextFile.atEndOfStream
Response.Write objTextFile.ReadLine(“Hello”)
WEND
objTextFile.Close
%>
Ví dụ 2: thêm dữ liệu vào file.txt
ReadingFile.asp
<%
Set objFSO=Server.CreateObject(“Scripting.FileSystemObject”)
Set objTextFile=obj.OpenTextFile(“C:\MyFile\file.txt”, ForAppending)
objTextFile.WriteBlankLines(2)
objTextFile.WriteLine(“This is a new line”)
objTextFile.Close
%>
VI. 2.. Đối tượng TextStream
Sử dụng các phương thức và property của đối tượng TextStream để đọc hay ghi dữ
liệu vào file.
Phương thức
Close Đóng một file.
Read(numchars) Đọc numchars ký tự từ file.
ReadAll Đọc toàn bộ nội dung của file TextStream.
ReadLine Đọc một dòng từ file.
Skip(numchars) Nhảy qua numchars ký tự khi đọc file.
SkipLine Nhảy qua dòng kế tiếp khi đọc file.
Write(string) Ghi chuỗi lên file.
WriteLine([string]) Ghi chuỗi và thêm ký tự xuống hàng lên file.
WriteBlankLine(n) Ghi n dòng lên file.
Properties
AtEndOfLine TRUE nếu con trỏ file ở cuối dòng trong một file.
AtEndOfStream TRUE nếu con trỏ file ở cuối file.
29
Column Trả về số cột hiện hành trong một file, bắt đầu từ 1.
Line Trả về số dòng hiện hành trong một file, bắt đầu từ 1.
Ví dụ 1: sử dụng FileSystemObject để ghi dữ liệu vào file
<%
Set objFile =Server.CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFile.CreateTextFile ("c:\myfile. txt", True)
objTextFile.WriteLine("This is a test. ")
objTextFile.Close
%>
Ví dụ 2: sử dụng FileSystemObject để đọc file
<%
Set objFile =Server.CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFile.CreateTextFile("c:\testfile.txt", True)
While NOT objTextFile.atEndOfStream
Response.Write(objTextFile.ReadLine)
Wend
objTextFile.Close
%>
VI. 3. Thành phần Ad Rotator
Thành phần Ad Rotator tạo một đối tượng tự động quay các hình ảnh quảng cáo trên
một trang Web. Mỗi khi một user mở hoặc nạp lại trang Web, thành phần Ad Rotator
hiển thị một thông báo mới dựa trên thông tin bạn chỉ định trong Rotator Schedule File
Cú pháp:
Set AdRotator = Server.CreateObject("MSWC.adRotator")
với AdRotator là tên của đối tượng AdRotator.
Properties
Border Chỉ định kích thước đường viền của quảng cáo banner.
Clickable Cho biết quảng cáo banner có chức năng là một siêu liên kết. Nó có 2 giá
trị là TRUE và FALSE.
TargetFrame Chỉ định tên của frame để hiển thị thông báo trong đó.
Methods
GetAdvertisement Lấy chi tiết thông tin về quảng cáo banner.
Để tạo một thực thể của thành phần Ad Rotator, chúng ta sử dụng phương thức
CreateObject của đối tượng Server.
Ví dụ: Hiển thị các thông báo khác nhau mỗi khi user xem trang Web, trong đó tập tin
MyAdFile.txt chứa thông tin về các quảng cáo được hiển thị.
30
Adrotator Example
<%
Set objAd = Server.CreateObject("MSWC.adRotator") %>
objAd.Border(0) ‘không có đường viền
objAd.Clickable(TRUE) ‘là một siêu liên kết
objAd.TargetFrame(“MyFrame”)
‘nạp vào frame tên MyFrame
strHTML=objAd.GetAdvertisement(“AdFiles\MyAdFile.txt”)
Response.Write(strHTML) ‘đưa HTML vào trong trang
%>
VI. 4. Thành phần Browser Capabilities
Xác định khả năng, loại, kiểu của mỗi browser như tên, version, có hỗ trợ frame, table
hay không…)
Khi một browser kết nối tới web server, nó tự động gởi tiêu đề User Agent HTTP.
Tiêu đề này là một chuỗi ASCII định dạng browser và version của nó. Bạn có thể
thêm các property hoặc định nghĩa browser mới bằng cách cập nhật file browscap.ini.
Cú pháp
Set BrowserType = Server.CreateObject("MSWC.BrowserType")
với BrowserType là tên đối tượng BrowserType.
Ví dụ: sử dụng đối tượng BrowserType hiển thị một bảng cho biết các khả năng của
browser hiện hành
Browser Example
Browser
Version
Frames
TRUE
FALSE
Tables
TRUE
FALSE
31
BackgroundSounds
TRUE
FALSE
VBScript
TRUE
FALSE
JScript
TRUE
FALSE
VI. 5. Thành phần Content Linking
Tạo nội dung của trang và liên kết chúng với nhau giống như những trang trong một
quyển sách.
Thành phần Content Linking tạo Nextlink quản lý danh sách các URL, nó có thể phát
sinh và cập nhật bảng nội dung và điều khiển liên kết tới các trang trước đó và các
trang sau đó.
Cú pháp
Set NextLink = Server.CreateObject("MSWC.NextLink")
với NextLink là tên của đối tượng được tạo bởi phương thức Server.CreateObject.
Các phương thức
GetListCount(list) T
L
L
M
L
L
L
rả về tổng số trang chứa trong list file.
GetNextURL(list) ấy URL của trang kế tiếp trong list file.
GetPreviousDescription(list) Lấy dòng mô tả của trang trước đó trong list file.
GetListIndex(list) ấy vị trí của trang hiện hành trong list file.
GetNthDescription(list, n) ô tả trang thứ N trong list file
GetPreviousURL(list) ấy URL của trang trước đó trong list file.
GetNextDescription(list) ấy mô tả của trang kế tiếp trong list file.
GetNthURL(list, n) ấy URL của trang thứ Nth trong list file.
VI.5.1. Tạo nội dung của một trang
Xây dựng bảng nội dung trong trang:
<% intCount = objNextLink.GetListCount ("contentlink.txt")
For intLoop=1 To intCount %>
32
">
ext %>
Count = objNextLink.GetListCount ("links\ contentlink.txt")
I.5.2. Duyệt thông qua các trang
k và nút Next tới một file HTML.
ListIndex(strListFile)
Back” Onclick=“location.href=’<%=
utton Value=“Home” Onclick=“location.href=’content, asp %>’
tThisPage
hành phần Database Access
b động tác động lẫn nhau bằng cách sử dụng các thành
viết bằng cách sử dụng thành phần Database Access của
) với hầu hết
các ứng dụng
xét các phần trong thư viện công cụ này.
kế một cách đơn giản nhất, nó giao tiếp với database thông qua
cơ sở dữ liệu theo dạng bảng như Exel, hoặc File text thì ODBC không hỗ trợ).
<% N
<% int
<% intCoun=objNextLink.GetListCount ("/demo/contentlink.txt")
V
Đoạn script sau thêm vào nút Bac
<% Set objNextLink = Server.CreateObject ("MSWC.NextLink")
strListFile=(“contentlink.txt”)
intThisPage= objNextLink.Get
If ( intThisPage > 1) Then %>
<Input Type=Button Value=“<
objNextLink.GetPreviousURL (strListFile) %>’ ; ">
<Input Type=B
; ">
If ( in
” Onclick=“location.href=’<%=
NextLink.GetNextURL (strListFiel) %>’; ">
T
Ta có thể tạo những trang We
phần Server sau trong Script
Một ứng dụng Web Database
ActiveX hay còn gọi là thư viện ADO (ActiveX Data Object). Đây cũng chính là một
điểm mạnh nhất của ASP trong việc phát triển ứng dụng Web Database.
Các đối tượng của ADO cung cấp cơ chế tạo ra các kết nối (Connection
các kiểu Database, cũng như việc truy xuất, cập nhật các Database này.
Hiện nay thư viện ADO là một công cụ mạnh nhất trong việc phát triển
Database trên Internet.
Trong phần này ta sẽ xem
Giao diện ADO:
ADO được thiết
phương thức ODBC (Open Database Connectivity), chúng ta có thể sử dụng chúng với
bất kỳ loại Database nào nếu như ODBC có driver hỗ trợ. (Hiện nay tồn tại Driver cho
hầu hết các loại Database, như Foxpro, Access, oracle, Spl server…tuy nhiên các file
33
Các đối tượng trong ADO
Các đối tượng chính trong ADO đó là: Connection, Commmand và RecordSet.
Ngoài ba đối tượng chính này còn có các đối tượng con của nó cùng với các tham số,
iên kết property, phương thức bên trong. Sử dụng Connection ta có thể thiết lập sự l
với cơ sở dữ liệu, thông qua đó ta có thể thực hiện các query để lấy ra các record hoặc
cập nhật một record bằng sử dụng đối tượng Command. Kết quả thực hiện các query
trên database sẽ được lưu vào đối tượng RecordSet, trên đối tượng này ta có thể duyệt
và lấy ra một hay nhiều Record.
1. Đối tượng Connection
Để sử dụng đối tượng Connection, trước tiên ta phải tạo ra một thực thể (instance) cho
của đối tượng này trong trang ASP.
ection_name= Server. CreateObject (“ADODB. Connection”)
ata Source cố định
ất cả trang thì khi đó ta sẽ đặt thực thể (instance) của Connection ở mức
art ()
bjConn= Servcer.CreateObject (“ADODB.Connection”)
ập tầm vực cho Connection ở mức Sesstion như sau:
bjConn = Server.CreateObject (“ADODB.Connection”)
ta có thể xem xét thêm việc tối ưu cho các Connection trong một ứng dụng
iều người sử dụng truy xuất tới Database, đó là khả năng Connection Pooling của
cậy đối với các Website có sự lưu
thông dữ liệu thấp (low-trafic)
nó, đây thực sự là thực thể
Để tạo một thực thể (instance) đối tượng Connection bạn có thể sử dụng đoạn script
sau:
< %
Conn
% >
Thông thường trong một ứng dụng nếu ta cần có một liên kết với D
cho t
application scope bằng cách đưa phát biểu tạo thực thể (instance) ở trên vào sự kiện
Application_OnStart:
<%
Sub Application_OnSt
Set o
End Sub
%>
hoặc thiết l
< %
Sub Session_OnStart ()
Set o
End Sub
%>
Tuy nhiên
có nh
ODBC 3.0. Connection Pooling. Các ứng dụng cơ sở ứng dụng truyền thống đều tạo
một nối liên kết đơn tới Database mà nó sử dụng, còn các ứng dụng Database trên
Web lại mở và đóng các liên kết này ở mỗi một trang Web. Một phương pháp cho các
ứng dụng Database trên Web là tạo một sự liên kết liên tục với cơ sở dữ liệu của từng
người sử dụng và lưu trữ trong đối tượng Session.
Tuy nhiên phương pháp này có thể làm gia tăng số lượng các user có kết nối với cơ sở
dữ liệu mà không làm việc và nó chỉ đạt được độ tin
34
Phương pháp tiện lợi trong việc quản lý các kết nối với cơ sở dữ liệu của ứng dụng
Web là quản lý bằng Connection Pool của ODBC 3.0, nhằm giảm bớt số lượng liên
kết rảnh rỗi, ODBC sẽ mở các kết nối và quản lý các kết nối này.
n kết rảnh nào trong
ion
Mỗi khi có một yêu cầu mới thì thực hiện việc kiểm tra xem có liên kết nào trong
Connection Pool đang rảnh không, nếu không có thì sẽ tạo kết nối mới, nếu có thì nó
sẽ lấy liên kết rảnh này mà không tạo liên kết mới. Nếu một liê
Connection Pool tồn tại quá 60 giây thì nó sẽ tự động loại bỏ.
Connection Pooling được kích hoạt mặc nhiên trong ASP, ta có thể loại bỏ bằng cách
thiết lập giá trị Register Entry Start Connection Pool về giá trị 0.
Các phương thức và đặc tính (property) của đối tượng Connect
Phương thức Môtả
Open Mở một kết nối mới tới dữ liệu nguồn.
Close Đóng lại một kết nối.
Execute Thực thi một query, SQL hoặc một thủ tục lưu trữ sẵn.
Property Môtả
CommandTimeout Số giây chờ đợi khi thực thi một lệnh trước khi kết thúc.
ConnectionString Thông tin dùng để tạo kết nối tới nguồn dữ liệu.
ConnectionTimeout Số giây chờ đợi khi tạo ra một kết nối trước khi kết thúc.
1. kết
Đ ố ợng
onnection, sau đó ta có thể mở một kết nối tới dữ liệu nguồn (DSN) để có thể truy
1 Mở và đóng một nối Database
ể thiết lập một liên n i với database thì bạn tạo thực thể (instance) của đối tư
C
xuất dữ liệu.
Cú pháp:
Connection.Open ConnectionString, User, Password
Trong đó
ConnectionString: Chuỗi định nghĩ a tên của Data Source Name (DSN), tên này được
người sử dụng đưa vào khi mở một kết nối
ên là student, user="student" và password ="magic"
on")
onn.Close
khai báo trong ODBC.
User: Tên
Password: Mật mã đưa vào khi thiết lập một kết nối.
Ví dụ: mở một DSN có t
<%
Set objConn=Server.CreateObject("ADODB.Connecti
objConn.Open "DSN=student;uid=student;pwd=magic"
objC
Set objConn=Nothing
%>
35
Sau khi xử lý xong dữ liệu trên data source, trước khi kết thúc trang ta phải đóng lại
i, bạn không thể sử dụng kết nối để giao tiếp với database.
.2 Thực thi câu lệnh SQL với kết nối Open:
các kết nối đã mở. Sử dụng phương thức Close của đối tượng Connection để đóng một
kết nối: objConn.Close
Sau khi đóng một kết nố
1
ực thi một câu lệnh SQL hoặc với một thủ
Một biến đối tượng Recordset chứa kết quả truy vấn.
on.
ng đến.
mmandText.
Giá trị Hằng tương ứng Mô tả CommandText
Sau khi đã kết nối với Data Source, để th
tục, sử dụng phương thức Execute cho phép thực thi một câu lệnh tác động lên Data
Source. Phương thức này có 2 dạng: Một dạng được sử dụng khi tìm kiếm kết quả từ
một database và dạng khác là được sử dụng khi không có kết quả nào được trả về.
Set recordset = connection.Execute(CommandText, RecordsAffected, Options)
connection.Execute CommandText, RecordsAffected, Options
Trong đó
Recordset:
CommandText: Chứa query để thực thi.
Connection: Một biến đối tượng Connecti
RecordsAffected: chứa số record mà lệnh tác độ
Options: Có các giá trị khác nhau tương ứng với mỗi loại Co
0 AdCmdUnknown à mặc định khi định nghĩa. Unknown. Giá trị này l
1 AdCmdText CommandText là một câu lệnh như câu lệnh SQL.
2 AdCmdTable Tên của bảng tạo recordset.
3 AdCmdStoredProc ocedure) trong data source. Một thủ tục trữ sẵn (stored pr
T ớc k
c thi một câu lệnh SQL mà không tìm
BS. INC"-->
một instance (thực thể) của đối tượng Connection
ion")
dent;uid=student;pwd=magic"
c
thing
rư hi bạn có thể sử dụng những hằng số này trong một trang ASP, bạn phải
include một file đặc biệt gọi là ADOVBS.inc.
Ví dụ 1: sử dụng phương thức Execute để thự
kiếm lại bất kỳ kết quả nào.
<!-- #include virtual="ADOV
<%
‘tạo
Set objConn = Server.CreateObject("ADODB.Connect
‘mở kết nối tới Database
objConn.Open "DSN=stu
‘thực thi một thủ tục lưu trữ sẵn tên là MyPro
objConn.Execute “MyProc”, adCmdStoredPro
objConn.Close
Set objConn=No
%>
SQL
36
Ví dụ 2: sử dụng phương thức Execute để trả kết quả từ một câu truy vấn
một thực thể của đối tượng Connection
.Connection")
ent;uid=student;pwd=magic"
FROM MyTable WHERE Name= 'John' "
thing
. Đối tượng Command.
ơng thức Execute của đối tượng Connection để thực thi một
ruy vấn không sử dụng đối tượng Command, đưa một chuỗi
ượng
et objCmd = Server.CreateObject (“ADODB.Command”)
xét các đặc tính và
<%
‘tạo
Set objConn = Server.CreateObject("ADODB
‘Mở kết nối tới Database
objConn.Open "DSN=stud
‘thực thi câu lệnh SQL
SQLtemp="SELECT *
objConn.Execute SQLtemp, adCmdText
objConn.Close
Set objConn=No
%>
2
Thay vì phải sử dụng phư
thủ tục lưu trữ sẵn hoặc một câu lệnh SQL, ta có thể sử dụng đối tượng Command để
thi hành các thao tác với cơ sở dữ liệu như: thêm, xóa, cập nhật dữ liệu hoặc truy vấn
dữ liệu trong một bảng.
Chú ý: Để thực thi một t
truy vấn vào phương thức Execute của đối tượng Connection hoặc là tới phương thức
Open của đối tượng Recordset. Tuy nhiên, đối tượng Command cần được sử dụng khi
bạn muốn vẫn giữ lại lệnh và thực thi lại nó, hoặc sử dụng các tham số truy vấn.
Việc tạo một thực thể (instance) cho đối tượng Command cũng giống như đối t
Connection tức là ta cũng sử dụng phương thức Server.CreateObject.
Ví dụ:
S
Tuy nhiên để thực sự sử dụng biến đối tượng này ta phải xem
phương thức đi kèm theo nó.
Phương thức Mô tả
CreateParameter t đối tượng Parameter trong Parameters collection. Tạo mộ
Execute Thực thi câu lệnh SQL hoặc thủ tục lưu trữ sẵn chỉ định trong
CommandText property.
roperty Mô tả P
ActiveConnection ng Connection nào được sử dụng với đối tượng Command. Đối tượ
CommandText Chỉ định câu lệnh cần thực thi.
CommandTimeout h, giá trị thời gian này tính theo Xác định thời gian thực thi lện
iâCommandType Cho biết kiểu của query chỉ định trong CommandText.
Prepared Tạo ra lệnh chuẩn bị trước khi thực thi.
37
2.1 Tạo một kết nối Active Connection:
đối tượng Connection đã được kết nối với cơ sở Sau khi đã có thực thể (instance) của
dữ liệu và đối tượng Command. Lúc này nếu muốn sử dụng đối tượng Command ta
phải gán tên của Connection thích hợp (Connection nào kết nối tới cơ sở dữ liệu cần
làm việc) vào cho ActiveConnecttion của đối tượng Command.
Cú pháp
e.activeConnection = Connection_name nam
í dụ:V
<%
bjCSet o onn = Server.CreateObject("ADODB.Connection")
onnection, ta có thể sử dụng phương thức
ên đã sử dụng
thing
dTimeout đầu tiên để xác định khoảng thời
objConn.Open "DSN=student;uid=student;pwd=magic"
objCmd.activeConnection = objConn.Open
%>
khi đã thiết lập kết nối với đối tượng CSau
Exexcute của đối tượng Command gần giống như với Connection. Tuy nhiên, điểm
khác với đối tượng Connection là đối với đối tượng Command nếu ta có dự định thi
hành một lệnh nào thì ta sẽ phải khởi tạo các giá trị cho CommandText,
CommandType, ….
Ví dụ: đoạn chương trình thi hành một câu query trên một data source
<%
bjConn = Server.CreateObject("ADODB.Connection") Set o
Set objCmd = Server.CreateObject(“ADODB.Command”)
‘tạo kết nối
en "DSN=student;uid=student;pwd=magic" objConn.Op
objCmd.activeConnection = objConn.Open
objCmd.CommandText="SELECT * FROM Contact WHERE State=’LA’"
‘cho biết CommandText là một câu lệnh SQL
objCmd.CommandType = 1
‘biên dịch câu lệnh
TRUE objCmd.Prepared =
‘thực thi câu lệnh
objCmd.Execute
uy‘giải phóng tài ng
Set objCmd.activeConnection = No
%>
g ta có thể thiết lập giá trị CommanChún
gian thực thi câu lệnh, mặc định là 30 giây, nếu để giá trị này là 0 thì ADO sẽ thực thi
cho đến khi tác vụ được hoàn tất.
2.2 Sử dụng tham số cho các lệnh SQL.
38
Nếu như query cần thực hiện có yêu cầu các tham số, thì ta phải thêm các tham số này
vào Parameter collection trước khi thực hiện câu lệnh. Đối với phương thức Execute
của đối tượng Connection không có khả năng này.
Sử dụng phương thức Execute của đối tượng Command thực thi câu query chỉ định
trong CommandText property.
Cú pháp
Set recordset = command. Execute(RecordsAffected, Parameters, Options)
command.Execute RecordsAffected, Parameters, Options
Trong đó
recordset: Một biến đối tượng Recordset chứa kết quả truy vấn.
command: Một biến đối tượng đại diện cho đối tượng Command.
RecordAffected và Options có chức năng và giá trị giống như trong đối tượng
Connection.
Parameter là một dãy các giá trị tham số được đưa vào với một câu lệnh SQL.
Để tìm hiểu cách tạo ra danh sách các tham số của câu lệnh, ta hãy xem xét các
phương thức và property của Parameter collection.
Phương thức Mô tả
Append Thêm một tham số vào collection.
Delete Xoá một tham số trong collection.
Refresh Cập nhật collection để phản ánh sự thay đổ i các tham
Property Mô tả
Count Trả về số tham số trong collection.
Item Lấy lại giá trị của một tham số trong collection.
Tạo và thêm tham số vào Collection
Mỗi một phần tử của Parameter collection có thể coi như một đối tượng Parameter và
chúng cũng có các đặc tính (property) riêng của mình.
Property Mô tả
Attributes Kiểu dữ liệu mà tham số chấp nhận.
Direction Thể hiện kiểu dữ liệu mà tham số là Input hay Output, hay là cả hai,
hay nó là giá trị trả về từ một thủ tục lưu trữ sẵn (stored procedure).
Name Tên của tham số.
NumericScale Số chữ số thập phân trong tham số kiểu số.
Precision Số chữ số của tham số kiểu số.
Size Kích thước lớn nhất, tính theo byte, của giá trị tham số.
Type Kiểu dữ liệu của tham số.
Value Giá trị gán cho tham số.
39
Để tạo một đối tượng Parameter mới, sử dụng phương thức CreateParameter của đối
tượng Command
Cú pháp
Set pamareter = command.CreateParameter(Name, Type, Direction, Size, Value)
Để thêm một tham số mới vào Parameter collection. Trước tiên ta phải tạo một thực
thể (instance) cho đối tượng Parameter, sau đó thiết lập các giá trị property cho nó và
cuối cùng sử dụng phương thức Append.
Ví dụ: tạo một tham số mới và thêm tham số này vào Parameter collection.
Set objParam = objCmd.CreateParameter ( “State”, 128, 1, 2, ”Ny” )
objCmd.Parameters.append objParam
Ví dụ:
<%
‘tạo một thực thểcủa đối tượng Command
objCmd = Server.CreateObject(“ADODB. Command”)
‘tạo kết nối
objConn.Open "DSN=student;uid=student;pwd=magic"
objCmd.activeConnection = objConn.Open
objCmd.CommandText="DeleteStateQuery"
‘cho biết CommandText là một thủ tục lưu trữ sẵn
objCmd.CommandType = 4
strValue=Request. Form(“txtState”)
‘khi submit từ một form
Set objParam = objCmd.CreateParameter ( “State” )
‘chỉ có tên tham số
ObjParam.Type=adChar
‘ kiểu tham số là chuỗi
ObjParam.Direction=adParamInput
‘một query đưa vào tham số
ObjParam.Size=Len(strValue)
‘kích thước của chuỗi
ObjParam.Value=strValue
‘giá trị chuỗi
objCmd.Parameters.append objParam
‘thêm tham số vào collection
objCmd.Execute
‘thực thi câu lệnh
Set objCmd.activeConnection = Nothing
‘giải phóng tài nguyên đã sử dụng
%>
Tham khảo các đối tượng collection
40
Mỗi khi chúng ta có các tham số trong collection. Để lấy giá trị của tham số trong
collection ta có thể sử dụng Item property hoặc sử dụng chỉ mục (index) hoặc là tên
tham số.
Cú pháp
objCmd.Parameters.Item(index)
hoặc objCmd.Parameters(index)
hoặc objCmd.Parameters. Item(tên_tham_số)
hoặc là objCmd.Parameters(tên_tham_số)
Ví dụ: để lấy giá trị của tham số State và 128 ở ví dụ trên, ta có thể sử dụng các Cú
pháp objCmd.Parameters.Item(0)
hoặc objCmd.Parameters(0)
hoặc objCmd.Parameters.Item(“State”)
hoặc là objCmd.Parameters(“State”)
tương tự objCmd.Parameters.Item(1)
hoặc objCmd.Parameters(1)
hoặc objCmd.Parameters.Item(128)
hoặc là objCmd.Parameters(128)
Đọc và hủy bỏ các tham số
Chúng ta có thể sử dụng vòng lặp For…Each để xuất ra tên và giá trị của tất cả các
tham sốtrong Parameter collection và đặt chúng trong trang hiện hành sử dụng phương
thức Response.Write
Ví dụ:
<%
For Each objParam In objCmd.Parameters
Response.Write “Parameter name = ” & objParam.Name & “”
Response.Write “Parameter value = ” & objParam.Value
Next
%>
Để hủy bỏ một tham số trong Parameter collection, sử dụng phương thức Delete.
Ví dụ: xoá tham số tên State, chúng ta có thể sử dụng tên hoặc chỉ mục của nó
objCmd.Parameters.Delete “State”
objCmd.Parameters.Delete 0
3. Đối tượng Recordset.
Bằng cách sử dụng các đối tượng Connection và Command ta có thể thực thi các
query để thêm vào, cập nhật hay xóa một record trong data source. Tuy nhiên trong
các ứng dụng thì ta cũng phải thực hiện việc lấy ra một số các record từ ADO, để hiển
thị giá trị của chúng ta phải sử dụng đối tượng Recordset. Sử dụng Recordset để hiển
thị các record
Một Recordset có thể được sử dụng để tượng trưng cho các record trong một bảng
database. Nó có thể chứa một hoặc nhiều record (hàng), mỗi record có thể chứa một
41
hoặc nhiều field (cột). Để tạo một thực thể (instance) của đối tượng Recordset, sử
dụng phương thức
Server.CreateObject:
Set objRs = Server.CreateObject("ADODB.Recordset")
Sau khi đã có biến đối tượng Recordset, ta có thể khởi tạo giá trị cho nó bằng cách lưu
kết quả trả về mỗi khi thực thi phương thức Execute của đối tượng Connection hay
Command. Để hiển thị các record trong Recordset, sử dụng vòng lặp thông qua các
record.
Ví dụ:
<%
Set objConn = Server.CreateObject(“ADODB.Connection”)
‘tạo một thực thể (instance) của đối tượng Connection
Set objRs = Server. CreateObject(“ADODB.Recordset”)
objConn.Open "DSN=student;uid=student;pwd=magic"
Set objRs = objConn.Execute(“SELECT * FROM MyTable” )
Do While objRs.EOF
Response.Write objRs(“Name”) & “”
objRs.MoveNext
Loop
Set objRs.Close
Set objConn.Close
%>
Làm việc với Fields Collection.
Mỗi đối tượng Recordset có một Fields collection chứa dữ liệu và thông
tin về mỗi trường (field) trong record hiện hành. Sử dụng Fields collection để lấy mỗi
record trong Recordset.
Phương thức Mô tả
Refresh Cập nhật collection để phản ánh sự thay đổi tới giá trị các field.
Property Mô tả
Count Trả về số field trong collection.
Item Lấy lại nội dung của các field trong collection.
Để hiển thị giá trị của cột trong bảng, bạn có thể sử dụng tên của trường (cột) hoặc khi
bạn không biết tên của trường (cột) thì ta có thể sử dụng chỉ mục của trường đó để
hiển thị.
Chú ý: chỉ số của cácfiled trong record được đánh số từ 0 cho tới giá trị
objRs.Fields.Count-1.
42
Ví dụ: hiển thị tất cả các hàng và cột trong một bảng
Dislay Database Example
<% whichDSN="DSN=student;uid=student;pwd=magic"
Mysql="Select * From MyTable "
Set objConn = Server.CreateObject("ADODB.Connection")
Conn.Open whichDSN
Set objRs = Server.CreateObject("ADODB. Recordset")
Mysql="Select * From MyTable "
objRs = objConn. Execute("Select * From MyTable ")
howmanyfields= objRs.Fields.Count –1
‘chứa số field trong Recordset
%>
‘hiển thị tên của các field
‘hiển thị tất cả các field trong Recordset
<%
objRs.movenext
Loop
objRs.close
set objRs=nothing
objConn.close
set objConn=nothing %>
Các kiểu con trỏ (Cursor) và khóa (Locking) Recordset
43
Một cursor xác định kiểu thao tác có thể thực hiện và kiểu thay đổi mà các user khác
khi mở một Recordset.
Còn kiểu locking xác định database sẽ xử lý trường hợp nhiều user cố gắng thay đổi
một record trong cùng một lúc.
Để thực hiện việc này, đầu tiên bạn tạo một thực thể (instance) của đối tượng
Recordset, sau đó sử dụng phương thức Open để mở một Recordset.
Cú pháp
objRs.Open Source, ActiveConnection, CursorType, LockType, Options
với các tham số:
Source: Một đối tượng Command, câu lệnh SQL, tên bảng hoặc thủ tục lưu trữ sẵn
(stored procedure).
ActiveConnection: Tên của dt Connection đã được mở kết nối với cơ sở dữ liệu cần
làmviệc.
CursorType: Kiểu của con trỏ được sử dụng khi mở Recordset.
CursorType sử dụng các kiểu cursor khi mở Recordset là:
AdOpenForwardOnly: (Mặc định)Với tham số này bạn chỉ có thể duyệt
các record trong Recordset theo một chiều từ đầu đến cuối.
AdOpenKeyset: Recordset được mở có khả năng cho phép ta cập nhập
các record (xóa, thay đổi). Tuy nhiên, nếu user khác thêm một record mới, record này
sẽ không xuất hiện trong Recordset.
AdOpenDynamic: Có thể duyệt theo tất cả các chiều (lên, xuống) trong Recordset.
Phản ánh tất cả những thay đổi (thêm vào, sửa đổi, loại bỏ) record trong Recordset do
user thực hiện.
AdOpenStatic: Bạn có thể duyệt theo tất cả các chiều (lên, xuống) trong Recordset.
Không phản ánh tất cả những thay đổi record trong Recordset do user thực hiện.
LockType: Kiểu locking sử dụng khi mở Recordset.
LockType sử dụng các kiểu locking khi mở Recordset là:
adLockReadOnly: Mặc định. Không thể thay đổi các record trong Recordset.
adLockOptimistic: Một record chỉ bị lock (khóa) ngay sau khi thay đổi dữ liệu trên
Recordset trên data source.
adLockPessimistic: Một record chỉ bị lock (khóa) khi bạn gọi phương thức Update của
Recordset.
adLockBatchOptimistic: Các record sẽ được cập nhật theo bó (batch update).
Options: Kiểu của query hoặc bảng đại diện bởi Source.
Ví dụ:
Cursor and Locking Example
44
<%
Set objConn = Server.CreateObject(“ADODB.Connection”)
Set objRs = Server.CreateObject(“ADODB.Recordset”)
objConn.Open "DSN=student;uid=student;pwd=magic"
MySql=(“Select * From MyTable”)
objRs.Open Mysql, objConn, adOpenForwardOnly, adLockReadOnly, adCmdText
objRs.close
set objRs=nothing
objConn.close
set objConn=nothing
%>
Sửa đổi các record trong Recordset
Bạn có thể sử dụng một số phương thức của Recordset để sửa đổi các record trong một
Recordset.
Phương thức Mô tả
AddNew Thêm một record mới vào Recordset.
Close Đóng lại đối tượng Recordset và các đối tượng con của nó.
Delete Xoá record hiện hành trong Recordset.
Requery Thực hiện lại query.
Update Lưu các thay đổi trên record hiện hành.
Ví dụ: sử dụng phương thức AddNew để thêm một record vào Recordset
AddNew Database Example
<%
Set objConn = Server.CreateObject(“ADODB.Connection”)
Set objRs = Server.CreateObject(“ADODB.Recordset”)
objConn.Open "DSN=student;uid=student;pwd=magic"
MySql=(“Select Name From MyTable”)
objRs.Open Mysql, objConn, adOpenForwardOnly, adLockReadOnly, adCmdText
objRs.addNew(“Name”)=“David”
objRs.Update
objRs.close
set objRs=nothing
45
objConn.close
set objConn=nothing
%>
Duyệt các record trên Recordset.
Đối tượng Recordset bao gồm một số phương thức để dịch chuyển qua
các record trong một Recordset, record mà nó dịch chuyển tới là record hiện hành. Khi
mở một Recordset thì kiểu CursorType mặc định là adOpenForwardOnly nghĩa là
chúng ta chỉ có thể dịch chuyển về phía trước, còn nếu muốn dịch chuyển quanh một
Recordset thì ta cần mở Recordset với kiểu CursorType là adOpenStatic (hoặc
adOpenDynamic, adOpenKeyset).
Move: Dịch chuyển vị trí của record hiện hành.
MoveFirst: Dịch chuyển về record đầu tiên.
MoveLast: Dịch chuyển về record cuối cùng.
MoveNext: Dịch chuyển về record kế tiếp.
MovePrevious: Dịch chuyển về record trước đó.
Khi ta đã có một Recordset, để hiển thị truy xuất tới mỗi Recordset trong đó ta có thể
sử dụng các phương thức duyệt như: MoveFirst, MoveLast, MoveNext, MovePrevious
sẽ õ lấy được nội dung của record đầu tiên, cuối cùng, kế tiếp hay record phía trước.
Khi sử dụng các phương thức để dịch chuyển các vị trí không xác định. Nếu record
hiện hành là record là record cuối cùng trong Recordset thì khi gọi phương thức
MoveNext thì sẽ gây ra lỗi. Để tránh trường hợp này thì ta sử dụng các property của
Recordset như BOF, EOF để xác định record hiện hành là đầu tiên hay là cuối cùng.
Các property này có ý nghĩa như sau:
BOF property có giá trị TRUE nghĩa là con trỏ đang ở vị trí đầu Recordset, khi
Recordset mới được mở thì BOF luôn có giá trị này.
EOF property có giá trị TRUE nghĩa là con trỏ đang ở vị trí cuối cùng của Recordset.
Nếu không có record nào trong Recordset thì cả BOF lẫn EOF đều là TRUE.
Ví dụ: sử dụng một vòng lặp và phương thức MoveNext để duyệt các record trong
Recordset.
AddNew Database Example
<%
Set objConn = Server.CreateObject(“ADODB.Connection”)
Set objRs = Server.CreateObject(“ADODB.Recordset”)
objConn.Open "DSN=student;uid=student;pwd=magic"
MySql=(“Select Name From MyTable”)
objRs.Open Mysql, objConn, adOpenDynamic, adCmdText
46
objRs.MoveLast
Do While Not objRs.BOF
Response.Write “” & objRs(“Name”)
objRs.MovePrevious
Loop objRs.Close
set objRs=Nothing
objConn.Close
set objConn=Nothing
%>
Lưu ý:
BOF và EOF có các điểm sau:
Nếu Recordset không chứa record nào khi bạn mở nó cả BOF và EOF là TRUE.
Khi BOF và EOF là TRUE, thuộc tính vẫn còn là TRUE cho đến khi bạn di chuyển
tới một record đang tồn tại, ở thời điểm này giá trị BOF hay EOF sẽ trở thành FALSE.
Khi BOF hay EOF là FALSE và record duy nhất trong recordset bị xóa, thuộc tính
vẫn giữ FALSE cho tới khi bạn cố di chuyển tới 1 record khác, ở thời điểm này cả
BOF và EOF trở thành TRUE.
Vào lúc bạn tạo hay mở một Recordset có chứa ít nhất một record, record đầu tiên
là record hiện hành và cả BOF và EOF là FALSE.
47
Các file đính kèm theo tài liệu này:
- Giáo trình ASP.pdf