III- KẾT NỐI VÀ TRUY XUẤT DATABASE
5. Phýõng thức Close: Ðể ngắt kết nối với cõ sở dữ liệuự ta dùng phýõng thức
3.3.2.4. Sử dụng câu truy vấn SQL
Bạn có thể xây dựng sẵn một câu lệnh truy vấn và thực thi nó bằng phýõng thức Open của đối týợng ĩừỨừởứRecordset để lấy ra tập bản ghi thoả mãn câu truy vấn
đóứ Sử dụng câu truy vấn SQỔ bạn có thể lọc ra những dữ liệu cần thiết theo một số điều kiệnự đồng thời có thể sắp xếp đýợc dữ liệuứ
Vắ dụ 1: Hiện những ngýời có Họ tên bắt đầu là chữ N
<%
set conn=Server.CreateObject("ADODB.Connection") conn.Open "bangluong"
sql="SELECT * FROM LUONG WHERE HOTEN LIKE 'N%ỖỢ
set rs=Server.CreateObject("ADODB.recordset") rs.Open sql, conn
%>
<table border="1" width="100%"> <%do until rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close %> </table> Vắ dụ 2 : Hiện toàn bộ nhýng Họ tên đýợc sắp xếp <% set conn=Server.CreateObject("ADODB.Connection") conn.Open "bangluong" set rs=Server.CreateObject("ADODB.recordset")
rs.Open sql, conn %>
<table border="1" width="100%"> <%do until rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close %> </table>
Có một cách khác để thực hiện câu truy vấn là sử dụng phýõng thức ẫxecute của đối týợng ĩừỨừởứắonnection rồi gắn kết quả trả về của phýõng thức này cho đối týợng ĩừỨừởứRecordsetứ Trong trýờng hợp nàyự ta không cần phải khai báo trýớc
đối týợng ĩừỨừởứRecordsetứ
Thắ dụ sau týõng đýõng với vắ dụ ử ở trênự nhýng ta sử dụng phýõng thức ADODB.Connection.Execute để thực hiện câu truy vấnứ
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Open "bangluong" Ổỹở ắSừỔ gắn với ừSẹ là ỘbangluongỢ
sql="SELECT * FROM LUONG WHERE HOTEN LIKE 'N%ỖỢ
Ổởỏ lệnh này set rs=Server.CreateObject("ADODB.recordset")
Ổởỏ lệnh này rs.Open sql, conn
Set rs=conn.Excute(sql) Ổẩhông cần khai báo trýớc đối týợng rs %>
<table border="1" width="100%"> <%do until rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<%next rs.MoveNext%> </tr> <%loop rs.close conn.close %> </table> 3.3.2.5. Một số vắ dụ
Vắ dụ 1: Ta hiện toàn bộ danh sách trong bảng lýõng nhýng có thêm tiêu đề
các cột cho dễđọc : <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Open ỘbangluongỢ set rs = Server.CreateObject("ADODB.recordset") sql="SELECT * FROM LUONG"
rs.Open sql, conn %>
<table border="1" width="100%"> <tr>
<% for each x in rs.Fields
response.write("<th>" & x.name & "</th>") next%>
</tr>
<%do until rs.EOF%> <tr>
<% for each x in rs.Fields%>
<td><% Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close %> </table>
</body> </html>
Vắ dụ 2 : Thêm record vào database
<html> <body> <%
set conn=Server.CreateObject("ADODB.Connection")
conn.Open ỘbangluongỢựẵựế Ổ Tham số để có thể truy xuất ự cập nhật database set rs = Server.CreateObject("ADODB.recordset")
sql="SELECT * FROM LUONG" rs.Open sql, conn
rs.addnew
rs.fields(ỘỹaẹVỢờọả
rs.fields(ỘẳotenỢờọỢẳoang ẳaiỢ rs.fields(ỘỔuongắởỢờọửớớ000 rs.fields(ỘPhuắapỢờọấớớớớ rs.fields(ỘTongTienỢờọửấớớớớ rs.update rs.close conn.close %> </table> </body> </html>
Vắ dụ 3: Trong các trang Web ta hãy thêm hit-counter vào. Đây là một kỹ thuật
để đếm số lýợt ngýời dùng đên thãm trang Web. Ta xây dựng một CSDL chứa giá trị hiện thời số lýợt ngýời đếnự mỗi một lýợt duyệt Web nữa tãng giá trị trong cõ sở dữ liệu lên ửứ
Ta tạo một tệp ĩSP chuyên dùng để đếm lýợt duyệt Web có tên là ừẫỹứĩSP sau đó trên toàn bộ các trang Web khác ta sẽ gọi tệp ĩSP này ở trong mỗi tệp ĩSP của ta (include file).
Giả sử ta có tệp counter_dbứmdb có bảng hit_countứ Trong bảng này có hai trýờng là Page_name và ẳit_countứ Page_name chứa tên file ĩSP và ẳit_count chứa số lần user duyệt trang đó
<%
Const adLockPessimistic = 2 Const adCmdText = &H0001 Dim strFilename
Dim strSQL Dim rsCounter Dim iCount
strFilename = Request.ServerVariables("SCRIPT_NAME")
strSQL = "SELECT page_name, hit_count FROM hit_count WHERE page_name='" & strFilename & "';"
Set rsCounter = Server.CreateObject("ADODB.Recordset")
rsCounter.Open strSQL, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("counter_db.mdb") & ";", _
adOpenKeyset, adLockPessimistic, adCmdText If rsCounter.EOF Then rsCounter.AddNew iCount = 0 rsCounter.Fields("page_name").Value = strFilename Else rsCounter.MoveFirst iCount = rsCounter.Fields("hit_count").Value End If
Ổ Tãng giá trị lên ử và update vào ừở rsCounter.Fields("hit_count").Value = iCount + 1 rsCounter.Update
rsCounter.Close
Set rsCounter = Nothing
' Trả về giá trị hiện thời RetrieveAndIncrementCount = iCount End Function %> Trong các tệp ĩSP của ta ự phần đầu tệp ta dùng lệnh <!--#include file="DEM.ASPỢ-->