目录
一、ADO 简介
二、ADO 数据库连接
1.创建一个 DSN-less 数据库连接
2.创建一个 ODBC 数据库连接
3.到 MS Access 数据库的 ODBC 连接
4.ADO 连接对象(ADO Connection Object)
三、ADO Recordset(记录集)
1.创建一个 ADO 表记录集(ADO Table Recordset)
2.创建一个 ADO SQL 记录集 (ADO SQL Recordset)
3.从记录集中提取数据
4.ADO 记录集对象(ADO Recordset Object)
四、ADO 显示
1.显示字段名称和字段值
2.在一个 HTML 表格中显示字段名称和字段的值
3.向 HTML 表格添加标题
4.向 HTML 表格添加颜色
五、ADO 查询
1.显示选定的数据
2.仅显示 "Customers" 表的 "Companyname" 字段中大于 E 的记录
3.仅显示 "Customers" 表中的西班牙客户
4.让用户根据国别来选择客户
一、ADO 简介
①ADO自述:
1.ADO 是一项微软的技术
2.ADO 是一个微软的 Active-X 组件
3.ADO 是一个访问数据库中数据的编程接口
4.ADO 指 ActiveX 数据对象(ActiveX Data Objects)
5.ADO 被用于从网页访问数据库
6.ADO 会随微软的 IIS 被自动安装
②从一个 ASP 页面内部访问数据库的通常的方法是:
1.创建一个到数据库的 ADO 连接
2.打开数据库连接
3.创建 ADO 记录集
4.从记录集提取您需要的数据
5.关闭记录集
6.关闭连接
二、ADO 数据库连接
在从某个网页访问数据之前,必须先建立一个数据库连接。
1.创建一个 DSN-less 数据库连接
连接到某一个数据库的最简单的方法是使用一个 DSN-less 连接。DSN-less 连接可被用于您的站点上的任何微软 Access 数据库。
假设您拥有一个名为 "northwind.mdb" 的数据库位于 "c:/webdata/" 的 web 目录中,您可以使用下面的 ASP 代码连接到此数据库:
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
%>
注意,在上面的例子中,您必须规定微软的 Access 数据库驱动程序(Provider),以及此数据库在计算机上的物理路径。
2.创建一个 ODBC 数据库连接
假设您拥有一个名为 "northwind" 的 ODBC 数据库,您可以使用下面的 ASP 代码连接到此数据库:
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Open "northwind"
%>
通过一个 ODBC 连接,您可以连接到您的网络中任何计算机上的任何数据库,只要 ODBC 连接是可用的。
3.到 MS Access 数据库的 ODBC 连接
如何创建到一个 MS Access 数据库的连接:
1.打开控制面板中的 ODBC 图标
2.选择系统 ODBC 选项卡
3.点击 ODBC 选项卡中的添加按钮
4.选择 Driver to Microsoft Access,然后点击完成按钮
5.在下一个窗口中点击“选择”按钮来定位数据库
6.为此数据库赋予一个数据源名称(Data Source Name,DSN)
7.点击"确定"
注:此配置必须在您的网站所在的计算机上完成。假如您正在自己的计算机上运行PWS或者IIS,此架构是可以运行的,但是假如您的网站位于一台远程的服务器,您就必须拥有此服务器的物理访问权限,或者请您的 web 主机提供商为您做这些事情。
4.ADO 连接对象(ADO Connection Object)
ADO 连接对象用来创建到某个数据源的开放连接。通过此连接,您可以对此数据库进行访问和操作,查看此连接对象的所有方法和属性。
三、ADO Recordset(记录集)
如需读取数据库的数据,那么其中的数据必须首先被载入一个记录集中。
1.创建一个 ADO 表记录集(ADO Table Recordset)
假设有一个名为 "Northwind" 的数据库,通过下面的代码访问数据库中的 "Customers" 表:
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=Server.CreateObject("ADODB.recordset")
rs.Open "Customers", conn
%>
2.创建一个 ADO SQL 记录集 (ADO SQL Recordset)
使用 SQL 访问 "Customers" 表中的数据:
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=Server.CreateObject("ADODB.recordset")
rs.Open "Select * from Customers", conn
%>
3.从记录集中提取数据
假设用一个名为 "Northwind" 的数据库,通过下面的代码访问数据库中 "Customers" 表:
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=Server.CreateObject("ADODB.recordset")
rs.Open "Select * from Customers", conn
for each x in rs.fields
response.write(x.name)
response.write(" = ")
response.write(x.value)
next
%>
4.ADO 记录集对象(ADO Recordset Object)
ADO Recordset 对象可被用来容纳来自数据库表的记录集。
查看 ADO Recordset 对象的所有方法和属性。
四、ADO 显示
显示来自记录集中的数据的最常用的方法,就是把数据显示在 HTML 表格中。
1.显示字段名称和字段值
一个名为 "Northwind" 的数据库,显示出 "Customers" 表中的数据(记得以 .asp 为扩展名来保存这个文件):
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs = Server.CreateObject("ADODB.recordset")
rs.Open "SELECT * FROM Customers", conn
do until rs.EOF
for each x in rs.Fields
Response.Write(x.name)
Response.Write(" = ")
Response.Write(x.value & "<br />")
next
Response.Write("<br />")
rs.MoveNext
loop
rs.close
conn.close
%>
</body>
</html>
2.在一个 HTML 表格中显示字段名称和字段的值
通过下面的代码把表 "Customers" 中的数据显示在一个 HTML 表格中:
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs = Server.CreateObject("ADODB.recordset")
rs.Open "SELECT Companyname, Contactname FROM Customers", 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>
</body>
</html>
3.向 HTML 表格添加标题
为这个 HTML 表格添加标题:
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs = Server.CreateObject("ADODB.recordset")
sql="SELECT Companyname, Contactname FROM Customers"
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>
4.向 HTML 表格添加颜色
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/db/northwind.mdb"))
set rs = Server.CreateObject("ADODB.recordset")
sql="SELECT Companyname, Contactname FROM Customers"
rs.Open sql, conn
%>
<table border="1" width="100%" bgcolor="#fff5ee">
<tr>
<%for each x in rs.Fields
response.write("<th align='left' bgcolor='#b0c4de'>" & 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>
五、ADO 查询
使用 SQL 来创建查询,指定仅查看选定的记录和字段。
1.显示选定的数据
仅显示 "Customers" 表的 "Companyname" 字段中以 A 开头的记录:
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=Server.CreateObject("ADODB.recordset")
sql="SELECT Companyname, Contactname FROM Customers
WHERE CompanyName LIKE 'A%'"
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>
2.仅显示 "Customers" 表的 "Companyname" 字段中大于 E 的记录
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/db/northwind.mdb"))
set rs = Server.CreateObject("ADODB.recordset")
sql="SELECT Companyname, Contactname FROM Customers WHERE CompanyName>'E'"
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>
3.仅显示 "Customers" 表中的西班牙客户
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/db/northwind.mdb"))
set rs = Server.CreateObject("ADODB.recordset")
sql="SELECT Companyname, Contactname FROM Customers WHERE Country='China'"
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>
4.让用户根据国别来选择客户
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/db/northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
sql="SELECT DISTINCT Country FROM Customers ORDER BY Country"
rs.Open sql,conn
country=request.form("country")
%>
<form method="post">
Choose Country <select name="country">
<% do until rs.EOF
response.write("<option")
if rs.fields("country")=country then
response.write(" selected")
end if
response.write(">")
response.write(rs.fields("Country"))
rs.MoveNext
loop
rs.Close
set rs=Nothing %>
</select>
<input type="submit" value="Show customers">
</form>
<%
if country<>"" then
sql="SELECT Companyname,Contactname,Country FROM Customers WHERE country='" & country & "'"
set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sql,conn
%>
<table width="100%" cellspacing="0" cellpadding="2" border="1">
<tr>
<th>Companyname</th>
<th>Contactname</th>
<th>Country</th>
</tr>
<%
do until rs.EOF
response.write("<tr>")
response.write("<td>" & rs.fields("companyname") & "</td>")
response.write("<td>" & rs.fields("contactname") & "</td>")
response.write("<td>" & rs.fields("country") & "</td>")
response.write("</tr>")
rs.MoveNext
loop
rs.close
conn.Close
set rs=Nothing
set conn=Nothing%>
</table>
<% end if %>
</body>
</html>