Giáo trình ASP

Microsoft Active Server Pages (ASP) là một môi trường kịch bản dựa trên server

(server-side scripting) cho phép tạo hoặc xây dựng các ứng dụng Web mạnh chứa các

thẻHTML, văn bản và các lệnh script hay các ứng dụng Web động, giao tiếp giữa

Client và server một cách hiệu quả. Các trang ASP có thểgọi các thành phần ActiveX

đểthực hiện các công việc nhưkết nối với một database hoặc thực hiện một tính toán

kinh doanh. Với ASP, bạn có thể đưa nội dung tương tác với các trang Web của bạn

hoặc xây dựng toàn bộcác ứng dụng Web sửdụng các trang HTML nhưgiao tiếp với

khách hàng của bạn.

­ Trang ASP:

Mỗi trang .asp có thểbao gồm một trong các thành phần sau: HTML, Script của ngôn

ngữVB Script hoặc Jscript, Text trong đó các tag HTML và Text sẽ được xửlý bình

thường như đối với các văn bản HTML (.html) thông thường, các script sẽ được một

bộphận (engine) của ASP thông dịch và thi hành trên server. Có thểxem trang ASP

nhưmột trang HTML có bổsung các ASP Script Command

­ Hoạt động của trang ASP:

Sau khi môi trường ASP thực hiện việc thực thi các file .asp xong nó sẽtrảlại kết quả

ởdạng HTML cho Web Server, tiếp theo Browser sẽnhận được nội dung cần trình

bày từWeb Server thông qua giao thức HTTP. Một trang ASP cũng sẽ được Brower

tham khảo tới bình thường nhưlà nó đã tham khảo tới một trang HTML của Web.

pdf48 trang | Chuyên mục: ASP | Chia sẻ: dkS00TYs | Lượt xem: 2120 | Lượt tải: 5download
Tóm tắt nội dung Giáo trình ASP, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
(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 

File đính kèm:

  • pdfGiáo trình ASP (2).pdf
Tài liệu liên quan