Giáo trình ASP

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.

pdf48 trang | Chia sẻ: aloso | Lượt xem: 1994 | Lượt tải: 0download
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:

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