Sử dụng câu truy vấn SQL

Một phần của tài liệu giáo trình asp khoa công nghệ thông tin đại học bách khoa hồ chí minh (Trang 100)

III- KẾT NỐI VÀ TRUY XUẤT DATABASE

3.3.2.4.Sử dụng câu truy vấn SQL

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 Close có trong đối tượng Recordset cũng như có trong đối tượ ng Connection Sau đ ó

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 ADODB.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 SQL 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: Hin nhng người có H tên bt đầ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 : Hin toàn b nhưng H tên được sp 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 Execute của đối tượng ADODB.Connection rồi gắn kết quả trả về của phương thức này cho đối tượng ADODB.Recordset. Trong trường hợp này, ta không cần phải khai báo trước đối tượng ADODB.Recordset.

Thí dụ sau tương đương với ví dụ 1 ở 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" ‘Mở CSDL gắn với DSN là “bangluong” sql="SELECT * FROM LUONG WHERE HOTEN LIKE 'N%’ ” ‘Bỏ lệnh này set rs=Server.CreateObject("ADODB.recordset")

‘Bỏ lệnh này rs.Open sql, conn

Set rs=conn.Excute(sql) ‘Khô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 hin toàn b danh sách trong bng lương nhưng có thêm tiêu đề

các ct 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 %>

</body> </html>

Ví d 2 : Thêm record vào database

<html> <body> <%

set conn=Server.CreateObject("ADODB.Connection")

conn.Open “bangluong”,2,3 ‘ 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(“MaNV”)=5 rs.fields(“Hoten”)=”Hoang Hai” rs.fields(“LuongCB”)=100000 rs.fields(“PhuCap”)=40000 rs.fields(“TongTien”)=140000 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 1.

Ta tạo một tệp ASP chuyên dùng để đếm lượt duyệt Web có tên là DEM.ASP sau đó trên toàn bộ các trang Web khác ta sẽ gọi tệp ASP này ở trong mỗi tệp ASP 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à Hit_count. Page_name chứa tên file ASP và Hit_count chứa số lần user duyệt trang đó

<%

Const adOpenKeyset = 1 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 1 và update vào DB 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

%>

<!--#include file="DEM.ASP”-->

Một phần của tài liệu giáo trình asp khoa công nghệ thông tin đại học bách khoa hồ chí minh (Trang 100)