X. Xuất bản web
c. Kết nối CSDL bất kỳ dùng ODBC
Bạn có thể kết nối tới một CSDL bất kỳ thơng qua kết nối ODBC dùng tên nguồn dữ liệu(DSN). Giả sử bạn đã tạo một DSN với CSDL Access northwind.mdb có tên là “AccNorth” bạn thực hiện kết nối như sau:
<% set conn=Server.CreateObject(“ADODB.Connection”) conn.Open “AccNorth” %> 6.3 Tạo Recordset
Sau khi mở kết nối CSDL, để đọc được dữ liệu bạn phải nạp dữ liệu vào recordset Giả sử để mở bảng Customers trong CSDL northwind.mdb bạn thực hiện như sau: <%
DATA SOURCE=c:\mydata\northwind.mdb” ‘Mở kết nối conn Conn.Open.strconn ‘Tạo recordset rs Set rs=Server.CreateObject(“ADODB.recordset”) ‘Nạp dữ liệu vào rs
Rs.Open “Customers”, conn %>
Hoặc bạn có thể dùng lệnh SQL để truy vấn dữ liệu trong bảng Customers như sau: <% rs.Open “select * from Customers”, conn %>
Thực hiện tương tự khi bạn đọc dữ liệu từ SQL Server.
6.4 Hiển thị dữ liệu
Sau khi nạp dữ liệu vào recordset, chúng ta sẽ thấy cách hiển thị dữ liệu trong bảng Customers lên trang web như sau:
<html> <body> <% ‘Kết nối Access: Strconn=”provider=Microsoft.Jet.OLEDB.4.0;data source=”C:\mydata\northwind.mdb”
mySQL=”select * from customers”
set conn=server.creatobject(“ADODB.connection”) conn.open strconn
set rs=Server.CreateObject(“ADODB.recordset”) rs.Open mySQL, conn
do until rs.EOF
for each x in rs.Fields
Response.Write(“<b>”&x.name&”</b>”) Respone.Write(“=”) Respone.Write(x.value & “br>”) Next Response.Write(“<br>”) Rs.MoveNext Loop Rs.close %> </body> </html>
6.5 Truy vấn dữ liệu
Thay vì nạp hết tất cả dữ liệu trong tất cả các cột của bảng, ta có thể giới hạn bớt kết quả đọc bằng cách thực hiệnh truy vấn dữ liệu theo một số điều kiện. Giả sử ta chỉ cần lấy dữ liệu của các cột “CompanyName”, “ContactName” và “Phone” với điều kiện CustomerID=”ANTON”, ta viết mệnh đề truy vấn trong tham số mySQL như sau:
<%
mySQL = “select CompantName, ContactName, Phone from Customers where CustomerID = “ANTON”
%> Ví dụ: <html> <body> <% ‘Kết nối Access: Strconn=”provider=Microsoft.Jet.OLEDB.4.0;data source=”C:\mydata\northwind.mdb”
mySQL = “select CompantName, ContactName, Phone From Customers where CustomerID = “ANTON”
set conn=server.creatobject(“ADODB.connection”) conn.open strconn
set rs=Server.CreateObject(“ADODB.recordset”) rs.Open mySQL, conn
%>
<table border=”1” width=”100%” cellspacing=0> <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 %>
rs.close conn.close %> </table> </body> </html> 6.6 Sắp xếp dữ liệu
Để dữ liệu trả về được sắp xếp theo thứ tự, ta sử dụng mệnh đề ORDER BY. Ví dụ: sắp xếp giá trị cột CompanyName tăng dần:
<% mySQL = “select CompantName, ContactName, Phone from Customers ORDER BY CompanyName desc
%>
Để sắp xếp nhiều cột, ta thêm các cột vào sau mệnh đề ORDER BY, các cột cách nhau dấu phẩy.
6.7 Thêm mới mẩu tin
Để thêm một mẩu tin mới vào bảng dữ liệu quản lý bới đối tượng Recordset, ta gọi phương thức AddNew như sau:
mySQL = “Select * From Customers” rs.open mySQL, conn
rs.AddNew With rs
.Fields (“CompanyName”) = ‘NewCompanyName’
.Fields (“ContactName”) = ‘NewContactName’.Fields (“Phone”) = ‘NewPhone’ .Fields (“Phone”) = ‘NewPhone’
End With
‘Lưu giá trị cho mẩu tin’
rs.Update
6.8 Chỉnh sửa nội dung mẩu tin
Để chỉnh sửa mẩu tin đã có ta gán nội dung mới cho trường tương ứng sau đó gọi phương thức Update. Ví dụ:
mySQL = “Select * From Customers Where CompanyName=’Cname’” rs.open mySQL, conn
‘Thay đổi nội dung phone của mẩu tin’
With rs
.Fields (“Phone”) = ‘newPhone’
End With
‘Lưu giá trị’
6.9 Xóa mẩu tin hoện hành
Nếu muốn xóa mẩu tin hoện hành, đơn giản ta chỉ cần gọi phương thức Delete của Recordset. Ví dụ:
mySQL = “Select * From Customers Where CompanyName=’Cname’” rs.open mySQL, conn
‘Xóa mẩu tin có CompanyName=’Cname’ rs.Delete
6.10 Tìm kiếm trên recordsets
Tìm kiếm recordset được thực hiện thơng qua câu lệnh SQL. Ví dụ để tìm số điện thoại của khách hàng của một công ty
<%
mySQL = “Select * From Customers
Where CompanyName=’ “+Cname++” ‘ rs.open.mySQL, conn
‘Nếu tìm thấy If (not rs.EOF) then
Response.write(“Tìm thấy”) Else Response.write(“Khơng tìm thấy”) Endif %> 7. Kết chương
Truy cập vào cơ sở dữ liệu từ trang web là một trong những tính năng quan trọng nhất khi xây dựng ứng dụng web. Bằng việc kết hợp mã kịch bản ASP và thành phần ADO, ta có thể dễ dàng thực hiện tương tác cơ sở dữ liệu để thêm, sửa đổi hoặc xóa dữ liệu trong cơ sở dữ liệu như Access, SQL.