Duyệ t thô ng qua cá c trang

Một phần của tài liệu ASPpdf (Trang 54 - 82)

VI.5. Thành phầ n Content Linking

VI.5.2. Duyệ t thô ng qua cá c trang

Đoạn script sau thêm và o nú t Back và nú t Next tới mộ t file HTML .

<% Set objNextLink = Server.CreateObject ("MSWC.NextLink") strListFile=(“contentlink.txt”)

intThisPage= objNextLink. GetListIndex(strListFile) If ( intThisPage > 1) Then %>

<Input Type=Button Value=“<Back” Onclick=“location.href=’<%=

objNextLink.GetPreviousURL (strListFile) %>’ ; ">

<% End If %>

<Input Type=Button Value=“Home” Onclick=“location.href=’content,asp %>’

; ">

If ( intThisPage < objNextLink. GetListCount(strListFile) Then %>

<Input Type=Button Value=“Next>” Onclick=“location.href=’<%=

NextLink.GetNextURL (strListFiel) %>’; ">

<% End If %>

Thà nh phầ n Database Access

Ta có thể tạo nhữ ng trang Web độ ng tá c độ ng lẫ n nhau bằ ng cá ch sử dụng cá c thà nh phần Server sau trong Script

Mộ t ứ ng dụng Web Database viế t bằ ng cá ch sử dụng thà nh phầ n Database Access củ a 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) vớ i hầ u hế t 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 cá c ứ ng dụng Database trê n Internet.

Trong phần nà y ta sẽ xem xé t cá c phầ n trong thư việ n cô ng cụ nà y.

Giao dieọ n ADO :

ADO được thiế t kế mộ t cá ch đơn giả n nhấ t, nó giao tiế p vớ i database thô ng qua 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 cơ sở dữ kiệ u theo dạng bả ng như Exel, hoặc File text thì ODBC khô ng hỗ trợ ).

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ố , property, phương thứ c bê n trong. Sử dụng Connection ta có thể thiế t lậ p sự liên kế t 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 nó , đây thực sự là thực thể củ a đố i tượng nà y trong trang ASP.

Để tạo mộ t thực thể (instance) đố i tượng Connection bạn có thể sử dụng đoạn script sau:

< %

Connection_name= Server.CreateObject (“ADODB.Connection”)

% >

Thô ng thườ ng trong mộ t ứ ng dụng nế u ta cầ n có mộ t liê n kế t vớ i Data Source cố đị nh cho tấ t cả trang thì khi đó ta sẽ đặ t thực thể (instance) củ a Connection ở mứ c 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_OnStart ()

Set objConn= Servcer.CreateObject (“ADODB.Connection”) End Sub

%>

hoặ c thiế t lậ p tầ m vực cho Connection ở mứ c Sesstion như sau :

< %

Sub Session_OnStart ()

Set objConn = Server.CreateObject (“ADODB. Connection”) End Sub

%>

Tuy nhiê n ta có thể xem xé t thê m việ c tố i ưu cho cá c Connection trong mộ t ứ ng dụng có nhiề u ngườ i sử dụng truy xuấ t tớ i Database, đó là khả nă ng

Connection Pooling cuû a 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 cậ y đố i vớ i cá c Web Site có sự lưu thô ng dữ liệ u thấ p (low-trafic)

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.

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ê n kế t rả nh nà o trong 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 Connection

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 keá t thuù c.

ConnectionString Thô ng tin dù ng để tạo kế t nố i tớ i nguồ n dữ lieọ u.

ConnectionTimeout Số giâ y chờ đợi khi tạo ra mộ t kế t nố i trướ c khi keá t thuù c.

1.1 Mở và đó ng mộ t kế 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ượng Connection, sau đó ta có thể mở mộ t kế t nố i tớ i dữ liệ u nguồn (DSN) để có thể truy xuấ t dữ liệ u .

Cú phá p :

Connection.Open ConnectionString,User,Passwosd

trong đó

ConnectionString : Chuoó i ủũ nh nghú a teõn cuỷ a Data Source Name (DSN), teõ n nà y được khai bá o trong ODBC.

User : Tên ngườ i sử dụng đưa và o khi mở mộ t kế t nố i 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ê n là student,user="student" và password ="magic"

<%

Set objConn=Server.CreateObject("ADODB.Connection") objConn .Open "DSN=student;uid=student;pwd=magic"

objConn.Close

Set objConn=Nothing

%>

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 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ố i, bạn khô ng thể sử dụng kế t nố i để giao tiế p vớ i database.

1.2Thực thi câ u lệ nh SQL vớ i kế t nố i Open:

Sau khi đã kế t nố i vớ i Data Source, để thực thi mộ t câ u lệ nh SQL hoặ c vớ i mộ t 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 : Mộ t biế n đố i tượng Recordset chứ a kế t quả truy vấ n.

CommandText : Chứ a query để thực thi.

Connection : Mộ t biế n đố i tượng Connection.

RecordsAffected : chứ a số record mà lệ nh tá c động đế n.

Options : Có cá c giá trị khá c nhau tương ứ ng vớ i mỗ i loại CommandText.

Giá trị Hằ ng tương ứ ng Mô tả CommandText

0 AdCmdUnknown Unknown. Giá trị này là mặ c đị nh khi đị nh nghó a.

1 AdCmdText CommandText là mộ t câ u lệ nh như câ u leọ nh SQL.

2 AdCmdTable Tê n củ a bả ng tạo recordset .

3 AdCmdStoredProc Mộ t thủ tục trữ sẵ n (stored procedure) trong data source.

Trướ c khi 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ực thi mộ t câ u lệ nh SQL mà khô ng tìm kiế m lại bấ t kỳ kế t quả nà o.

<!-- #include virtual="ADOVBS.INC"-->

<%

‘tạo mộ t instance (thực thể ) củ a đố i tượng Connection

Set objConn = Server.CreateObject("ADODB.Connection") ‘mở kế t nố i tớ i Database

objConn.Open "DSN=student;uid=student;pwd=magic"

‘thực thi mộ t thủ tục lưu trữ sẵ n tê n là MyPro objConn.Execute “MyProc”, adCmdStoredProc objConn.Close

Set objConn=Nothing

%>

Ví dụ 2 : sử dụng phương thứ c Execute để trả kế t quả từ mộ t câ u truy vấ n SQL

<!-- #include virtual="ADOVBS.INC"-->

<%

‘tạo mộ t thực thể của đố i tượng Connection

Set objConn = Server.CreateObject("ADODB.Connection") ‘Mở kế t nố i tớ i Database

objConn.Open "DSN=student;uid=student;pwd=magic"

‘thực thi câ u lệ nh SQL

SQLtemp="SELECT * FROM MyTable WHERE Name= 'John' "

objConn.Execute SQLtemp, adCmdText objConn.Close

Set objConn=Nothing %>

2. Đố i tượng Command.

Thay vì phả i sử dụng phương thứ c Execute củ a đố i tượng Connection để thực thi mộ t 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 truy vấ n khô ng sử dụng đố i tượng Command, đưa mộ t chuỗ i 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 soá truy vaá n.

Việ c tạo mộ t thực thể (instance) cho đố i tượng Command cũ ng giố ng như đố i tượng Connection tứ c là ta cũ ng sử dụng phương thứ c Server.CreateObject.

Vớ duù:

Set objCmd = Server.CreateObject (“ADODB.Command”)

Tuy nhiê n để thực sự sử dụng biế n đố i tượng nà y ta phả i xem xé t cá c đặ c tính và phương thứ c đi kèm theo nó .

Phương thứ c Mô tả

CreateParameter Tạo mộ t đố i tượng Parameter trong Parameters collection.

Execute Thực thi câ u lệ nh SQL hoặ c thủ tục lưu trữ sẵ n chỉ đị nh trong CommandText property.

Property Mô tả

ActiveConnection Đố i tượng Connection nà o được sử dụng vớ i đố i tượng Command.

CommandText Chỉ đị nh câ u lệ nh cần thực thi.

CommandTimeout Xá c đị nh thờ i gian thực thi lệ nh, giá trị thờ i gian nà y tính theo giâ y.

CommandType Cho bieỏ t kieồ u cuỷ a query chổ ủũ nh trong CommandText.

Prepared Tạo ra lệ nh chuẩ n bị trướ c khi thực thi.

2.1 Tạo mộ t kế t nố i Active Connection :

Sau khi đã có thực thể (instance) củ a đố i tượng Connection đã được kế t nố i vớ i cơ sở 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

name.ActiveConnection = Connection_name Vớ duù:

<%

Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open "DSN=student;uid=student;pwd=magic"

objCmd.ActiveConnection = objConn.Open

Sau khi đã thiế t lậ p kế t nố i với đố i tượng Connection, ta có thể sử dụng phương thứ c 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

<%

Set objConn = Server.CreateObject("ADODB.Connection") Set 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="SELECT * FROM Contact WHERE State=’LA’"

‘cho biế t CommandText là mộ t câ u lệ nh SQL objCmd.CommandType = 1

‘bieõ n dũ ch caõ u leọ nh

objCmd.Prepared = TRUE ‘thực thi câ u lệ nh

objCmd.Execute ‘giả i phóng tà i nguyê n đã sử dụng

Set objCmd.ActiveConnection = Nothing

%>

Chú ng ta có thể thiế t lậ p giá trị CommandTimeout đầ u tiên để xá c đị nh khoả ng thờ i 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.

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 số .

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 Teâ n cuû a tham soá .

NumericScale Số chữ số thậ p phâ n trong tham số kieồ u soỏ .

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ố .

Để 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ớ duù:

<%

‘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

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ớ duù:

<%

For Each objParam In objCmd.Parameters

Response.Write “Parameter name = ” & objParam.Name & “<br>”

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.

Một phần của tài liệu ASPpdf (Trang 54 - 82)

Tải bản đầy đủ (PDF)

(82 trang)