II. Những tác vụ cơ bản của ASP
1. Một số ứng dụng đơn giản
♦ Truy vấn dữ liệu:
Dim oRSp
Client
Web Browser
Web server (IIS 4.0)
ASP ADO OLE DB ODBC
Database Server
DBMS
(SQL Server
Sơ đồ ứng dụng trên Web
Set oRSp=Server.CreateObject(“ADODB.Recorset”) ORSp.Open=“People”, “DSN=Contacts”
Với DSN có tên là Contacts trong đó chứa bảng People.
Ngoài ra nếu cơ chế bảo vệ dữ liệu đợc kích hoạt thì chúng ta sẽ đa ra các chi tiết về bảo mật khi tạo Recordset.
Ví dụ: Giả sử ta có UserID là ASP, Password là 12345 thì chúng ta có thể truyền các thông tin này nh sau:
Dim oRSp
Set oRSp=Server.CreateObject(“ADODB.Recorset”)
ORSp.Open=“People”, “DSN=Contacts; uid=ASP; pwd=12345”
Trong đó:
- Dòng đầu tiên khai báo một biến tên là oRSp. Trong VB, chúng ta thờng thiết lập biến có một kiểu dữ liệu nào đó, với VBScipt thì tất cả các biến đều thuộc kiểu variant. Tuy nhiên, dòng này là không bắt buộc trong VBScript.
Nhng khi các công cụ gỡ rối ASP trở nên mạnh hơn thì việc khai báo biến và đối tợng rõ ràng sẽ giúp tìm lỗi dễ dàng hơn.
- Dòng thứ hai tạo một đối tợng Recordset và biến oRSp trở thành con trỏ chỉ
đến đối tợng này. Bây giờ oRSp có thể giữ tất cả các thuộc tính, phản ứng với các sự kiện và thực thi các phơng thức của một Recordset trong th viện ADODB. Quá trình này gọi là thực thể hoá. Công việc đợc thực hiện nhờ phơng thức CreateObject của đối tợng Server của ASP, nó cần một tham số – tên của lớp mẫu. Đồng thời chúng chỉ ra th viện lớp (ở đây là ADODB) và lớp trong th viện đó (ở đây là Recordset). Sau khi đã tạo xong đối tợng này thì chúng ta hoàn toàn có thể truy xuất dữ liệu.
- Dòng thứ ba dùng phơng thức Open của đối tợng Recordset để truy xuất dữ
liệu. Lu ý về cú pháp: chúng ta gọi phơng thức Open của đối tợng oRSp, do
đó chúng ta ghi là oRSp.Open. Để thực thi tác vụ, Open cần hai thông số.
Sau khi đã tạo xong Recordset (Dim, Set, RS.Open) chúng ta có thể truy xuất dữ liệu trong Recordset. Một mục dữ liệu đợc truy xuất bằng tên của Recordset và tên trờng nh sau:
ORSp(“PeopleNameFirst”)
Lệnh này sẽ trả về dữ liệu trong trờng PeopleNameFirst của mẩu tin hiện tại.
♦ Ghi dữ liệu lên trang Web:
Để ghi dữ liệu lên trang Web ta dùng lệnh:
Response.Write oRSp(“Tên trờng”)
Mã trên sẽ đợc đặt giữa <%, %> để ghi dữ liệu lên trang Web. Ngoài ra, ta có thể đa Response.Write vào trang HTML nh sau:
Welcome, <%=oRSp(“Tên trờng”)%> to our page.
♦ Đa dữ liệu vào biến.
Không phải lúc nào ta cũng đa thẳng dữ liệu lên trang Web, ví dụ nh khi ta cần một vài thao tác xử lý chuỗi hay kiểm tra tính hợp lệ trớc khi đa lên trang.
Trong trờng hợp đó ta sẽ đa dữ liệu vào biến.
Cách đa dữ liệu vào biến:
VarnameFirst=oRSp(“Tên trờng”)
Dòng mã trên lu dữ liệu vào biến để sau này sử dụng. Tuy nhiên việc này phải đợc thực hiện trong các dấu phân cách ASP vì HTML không có khả năng làm việc với biến.
♦ Sử dụng dữ liệu trong biểu thức.
Dữ liệu đợc truy xuất bởi ADO có thể đợc dùng trực tiếp trong một biểu thức. Ví dụ với đoạn mã dới đây:
If oRSp(“Quequan”)= “Vinh”
‘Chi cong 1 diem Endif
Trong đoạn mã trên chúng ta đã sử dụng dữ liệu trong một trờng của mẩu tin hiện tại trong Recordset oRSp nh là chuỗi văn bản để so sánh với chuỗi Vinh.
♦ Sử dụng dữ liệu làm đối số cho hàm.
Dữ liệu đợc đọc bởi ASP ADO có thể đợc sử dụng làm đối số cho hàm. Ví dô nh:
Varmacauhoi=Left(oRSp(“macauhoi”,1))
VarPassword=Lcase(oRSp(“Password”)) VarVitri=intstr(oRSp(“hoten”,“ ”))
♦ Tạo bảng với dữ liệu
Các quy tắc cơ bản của các thẻ tạo bảng.
- Bắt đầu và kết thúc một bảng với: <TABLE BORDER=”1”> và </TABLE>
- Bắt đầu và kết thúc một hàng với <TR> và </TR>.
- Bắt đầu và kết thúc một ô với <TD> và </TD>.
Để tạo bảng hiển thị dữ liệu chúng ta cần phải kết hợp các thẻ tạo bảng của HTML với dữ liệu mà ADO trả về. Ví dụ về cách tạo bảng bao gồm một hàng và hai cét nh sau:
<%
Dim oRSp
Set oRSp=Server.CreateObject(“ADODB.Recordset”) ORSp.Open “People”, “DSN=Sailors”
Response.Write “<TABLE BORDER=”1”>”
Response.Write “<TR>”
Response.Write “<TD>”
Response.Write oRSst(“Peoplenamefirst”) Response.Write “<TD>”
Response.Write oRSst(“Lastname”) Response.Write “</TD>”
Response.Write “</TD>”
Response.Write “</TR>”
Response.Write “<TABLE”>”
%>
♦ Tạo bảng với vòng lặp For Next…
Thông thờng thì bảng sẽ bao gồm nhiều hàng và nhiều cột nhằm để lu trữ
đầy đủ thông tin cần thiết. Để tạo bảng bao gồm nhiều hàng và nhiều cột nh vậy thì ta không nên chút nào sử dụng lần lợt các thẻ nh trên, mà cách đơn giản nhất là sử dụng vòng lặp For Next đã có sẵn trong ASP.…
<%
Dim iRowCounter
Dim oRSfn
Set oRSfn=Server.CreateObject(“ADODB.Recordset”) oRSfn.Open “People”, “DNS=Sailors”
oRSfn.MoveFirst
Response.Write “<TABLE BORDER=”1”>”
For iRowCounter = 1 to 3
Response.Write “<TR><TD>” & oRSfn(“PeopleNameFirst”) & “</TD>”
Response.Write “<TD>” & oRSfn(“PeopleNameLast”) & “</TD></TR>”
ORSfn.MoveLast Next
Response.Write “</TABLE>”
%>
Chú ý rằng chúng ta phải đặt thẻ tạo bảng bên ngoài vòng lặp và thẻ tạo hàng và ô trong vòng lặp.
♦ Đọc các mẩu tin.
Trong nhiều trờng hợp chúng ta không thể biết đợc trong Recordset có bao nhiêu mẩu tin, vì vậy mà sẽ không thể biết đợc sẽ phải thực hiện mẩu tin nào và vòng lặp bao nhiêu lần. ADO cung cấp một phơng pháp để kiểm tra bạn có đang
đứng ở mẩu tin cuối cùng hay không. Và nếu đúng thì sẽ ngừng tạo thêm hàng mới. Thuộc tính đợc dùng ở đây là EOF (End Of File). Thuộc tính này cho giá trị True khi bạn đang duyệt qua mẩu tin (hàng) cuối cùng.
Do while not oRSp.EOF
Response.Write oRSp(“PeopleNameLast”) & “<BR>”
ORSp.MoveNext Loop
Ví dụ: Tạo bảng với EOF, ở dây ta sẽ tạo một bảng liệt kê họ tên của những ngời có tên trong bảng People trong cơ sở dữ liệu Sailors.
<%
Dim oRSeof
Set oRSeof = Server.Createbject(“ADODB.Recordset”) ORSeof.Open “People”, “DNS=Sailors”
ORSeof.MoveFirst
Response.Write “<TABLE BORDER=“1”>
Do while NOT oRSeof.EOF
Response.Write “<TR><TD>” & oRSeof(“PeopleNameFirst”) & “</TD>”
Response.Write “<TD>” & oRSeof(“PeopleNameFirst”) & “</TD></TR>”
ORSeof.Movenext Loop
Response.Write “</TABLE>”
%>