ADO 教程
在我们的 ADO 教程中,您将学到有关 ADO 的知识,以及如何使用 ADO 从您的网站访问数据库。
开始学习 ADO !
ADO 参考手册
在 W3School,我们为您提供完整的 ADO 参考手册,其中包括内建对象,以及它们的属性和方法。
ADO 实例
通过实例来学习!因为 ASP 脚本只能在服务器端执行,所以你无法在浏览器中查看 ASP 代码,你能看到的仅仅是由 ASP 输出的纯粹的 HTML 代码。
在 W3School,每个实例均可显示出以往被隐藏的 ASP 代码。这样,您就可以更容易理解它们的工作原理。
ADO 简介
ADO 被用于从网页访问数据库。
您应当具备的基础知识
在继续学习之前,您需要对下面的知识有基本的了解:
· WWW、HTML 以及对网站构建的基本了解
· ASP(动态服务器页面)
· SQL(结构化查询语言)
如果您希望首先学习这些项目,请在我们的 首页 访问这些教程。
什么是 ADO?
· ADO 是一项微软的技术
· ADO 指 ActiveX 数据对象(ActiveX Data Objects)
· ADO 是一个微软的 Active-X 组件
· ADO 会随微软的 IIS 被自动安装
· ADO 是一个访问数据库中数据的编程接口
从 ASP 页面访问数据库
从一个 ASP 页面内部访问数据库的通常的方法是:
1. 创建一个到数据库的 ADO 连接
2. 打开数据库连接
3. 创建 ADO 记录集
4. 从记录集提取您需要的数据
5. 关闭记录集
6. 关闭连接
ADO 数据库连接
在从某个网页访问数据之前,必须先建立一个数据库连接。
创建一个 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),以及此数据库在计算机上的物理路径。
创建一个 ODBC 数据库连接
假设您拥有一个名为 "northwind" 的 ODBC 数据库,您可以使用下面的 ASP 代码连接到此数据库:
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Open "northwind"
%>
通过一个 ODBC 连接,您可以连接到您的网络中任何计算机上的任何数据库,只要 ODBC 连接是可用的。
到 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 主机提供商为您做这些事情。
ADO 连接对象(ADO Connection Object)
ADO 连接对象用来创建到某个数据源的开放连接。通过此连接,您可以对此数据库进行访问和操作。
查看此连接对象的所有方法和属性。
ADO Recordset(记录集)
如需读取数据库的数据,那么其中的数据必须首先被载入一个记录集中。
创建一个 ADO 表记录集(ADO Table Recordset)
在 ADO 数据库连接创建之后,如上一章所述,接下来就可以建立一个 ADO 记录集了。
假设我们有一个名为 "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
%>
创建一个 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
%>
从记录集中提取数据
在记录集被打开后,我们可以从记录集中提取数据。
假设我们用一个名为 "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
%>
ADO 记录集对象(ADO Recordset Object)
ADO Recordset 对象可被用来容纳来自数据库表的记录集。
查看 ADO Recordset 对象的所有方法和属性。
ADO 显示
显示来自记录集中的数据的最常用的方法,就是把数据显示在 HTML 表格中。
实例
如何首先创建一个数据库连接,然后创建一个记录集,然后把其中的数据显示在HTML中。
如何把数据表中的数据显示在HTML表格中。
如何向HTML表格添加标题,以使其可读性更强。
如何向HTML表格添加颜色,以使其更加美观。
显示字段名称和字段值
我们有一个名为 "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>
在一个 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>
向 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>
ADO 查询
我们可以使用 SQL 来创建查询,这样就可以指定仅查看选定的记录和字段。
实例
如何仅仅显示 "Customers" 表的 "Companyname" 字段中以 A 开头的记录。
如何仅仅显示 "Customers" 表的 "Companyname" 字段中大于 E 的记录。
如何仅仅显示 "Customers" 表中的西班牙客户。
让用户根据国别来选择客户
显示选定的数据
我们希望仅仅显示 "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>
ADO 排序
我们可以使用SQL来规定如何对记录集中的数据进行排序。
实例
如何根据指定字段名对数据进行排序
如何根据指定字段名对数据进行排序
让用户来选择根据哪列进行排序
对数据进行排序
我们希望显示 "Customers" 表中的"Companyname"和"Contactname"字段,并根据"Companyname"进行排序(请记得用.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")
sql="SELECT Companyname, Contactname FROM
Customers ORDER BY CompanyName"
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>
ADO 添加记录
我们可以使用 SQL 的 INSERT INTO 命令向数据库中的表添加记录。
向数据库中的表添加记录
我们希望向 Northwind 数据库中的 Customers 表添加一条新的记录。我们首先要创建一个表单,这个表单包含了我们需要从中搜集数据的输入域:
<html>
<body>
<form method="post" action="demo_add.asp">
<table>
<tr>
<td>CustomerID:</td>
<td><input name="custid"></td>
</tr><tr>
<td>Company Name:</td>
<td><input name="compname"></td>
</tr><tr>
<td>Contact Name:</td>
<td><input name="contname"></td>
</tr><tr>
<td>Address:</td>
<td><input name="address"></td>
</tr><tr>
<td>City:</td>
<td><input name="city"></td>
</tr><tr>
<td>Postal Code:</td>
<td><input name="postcode"></td>
</tr><tr>
<td>Country:</td>
<td><input name="country"></td>
</tr>
</table>
<br /><br />
<input type="submit" value="Add New">
<input type="reset" value="Cancel">
</form>
</body>
</html>
当用户按下确认按钮时,这个表单就会被送往名为 "demo_add.asp" 的文件。文件 "demo_add.asp" 中含有可向 Customers 表添加一条新记录的代码:
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
sql="INSERT INTO customers (customerID,companyname,"
sql=sql & "contactname,address,city,postalcode,country)"
sql=sql & " VALUES "
sql=sql & "('" & Request.Form("custid") & "',"
sql=sql & "'" & Request.Form("compname") & "',"
sql=sql & "'" & Request.Form("contname") & "',"
sql=sql & "'" & Request.Form("address") & "',"
sql=sql & "'" & Request.Form("city") & "',"
sql=sql & "'" & Request.Form("postcode") & "',"
sql=sql & "'" & Request.Form("country") & "')"
on error resume next
conn.Execute sql,recaffected
if err<>0 then
Response.Write("No update permissions!")
else
Response.Write("<h3>" & recaffected & " record added</h3>")
end if
conn.close
%>
</body>
</html>
重要事项
在您使用 INSERT command 命令时,请注意以下事项:
· 如果表含有一个主键,请确保向主键字段添加的值是唯一且非空的(否则,provider 就不会追加此记录,亦或发生错误)
· 如果表含有一个自动编号的字段,请不要在 INSERT 命令中涉及此字段(这个字段的值是由 provider 负责的)
关于无数据字段
在 MS Access 数据库中,假如您将 AllowZeroLength 属性设置为 “Yes”,您可以在文本、超链接以及备忘字段输入零长度的字符串 ("")。
注释:并非所有的数据库都支持零长度的字符串,因而当添加带有空白字段的记录时可能会产生错误。因此,检查您使用的数据库所支持的数据类型是很重要的。
ADO 更新记录
我们可使用 SQL 的 UPDATE 来更新数据库表中的某条记录。
更新数据库表中的记录
我们希望更新 Northwind 数据中 Customers 表的某条记录。首先我们需要创建一个表格,来列出 Customers 中的所有记录。
<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
%>
<h2>List Database</h2>
<table border="1" width="100%">
<tr>
<%
for each x in rs.Fields
response.write("<th>" & ucase(x.name) & "</th>")
next
%>
</tr>
<% do until rs.EOF %>
<tr>
<form method="post" action="demo_update.asp">
<%
for each x in rs.Fields
if lcase(x.name)="customerid" then%>
<td>
<input type="submit" name="customerID" value="<%=x.value%>">
</td>
<%else%>
<td><%Response.Write(x.value)%></td>
<%end if
next
%>
</form>
<%rs.MoveNext%>
</tr>
<%
loop
conn.close
%>
</table>
</body>
</html>
如果用户点击 "customerID" 列中的按钮,会打开一个新文件 "demo_update.asp"。此文件包含了创建输入域的源代码,这些输入域基于数据库中记录的字段,同时也含有一个保存修改的“更新按钮”:
<html>
<body>
<h2>Update Record</h2>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
cid=Request.Form("customerID")
if Request.form("companyname")="" then
set rs=Server.CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM customers WHERE customerID='" & cid & "'",conn
%>
<form method="post" action="demo_update.asp">
<table>
<%for each x in rs.Fields%>
<tr>
<td><%=x.name%></td>
<td><input name="<%=x.name%>" value="<%=x.value%>"></td>
<%next%>
</tr>
</table>
<br /><br />
<input type="submit" value="Update record">
</form>
<%
else
sql="UPDATE customers SET "
sql=sql & "companyname='" & Request.Form("companyname") & "',"
sql=sql & "contactname='" & Request.Form("contactname") & "',"
sql=sql & "address='" & Request.Form("address") & "',"
sql=sql & "city='" & Request.Form("city") & "',"
sql=sql & "postalcode='" & Request.Form("postalcode") & "',"
sql=sql & "country='" & Request.Form("country") & "'"
sql=sql & " WHERE customerID='" & cid & "'"
on error resume next
conn.Execute sql
if err<>0 then
response.write("No update permissions!")
else
response.write("Record " & cid & " was updated!")
end if
end if
conn.close
%>
</body>
</html>
ADO 删除记录
我们可使用 SQL 的 DELETE 命令来删除数据库表中的某条记录。
删除表中的记录
我们希望删除 Northwind 数据库的 Customers 表中的一条记录。首先我们需要创建一个表格,来列出 Customers 中的所有记录。
<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
%>
<h2>List Database</h2>
<table border="1" width="100%">
<tr>
<%
for each x in rs.Fields
response.write("<th>" & ucase(x.name) & "</th>")
next
%>
</tr>
<% do until rs.EOF %>
<tr>
<form method="post" action="demo_delete.asp">
<%
for each x in rs.Fields
if x.name="customerID" then%>
<td>
<input type="submit" name="customerID" value="<%=x.value%>">
</td>
<%else%>
<td><%Response.Write(x.value)%></td>
<%end if
next
%>
</form>
<%rs.MoveNext%>
</tr>
<%
loop
conn.close
%>
</table>
</body>
</html>
假如用户点击 "customerID" 列中的按钮,会打开新文件 "demo_delete.asp"。此文件包含了创建输入域的源代码,这些输入域基于数据库中记录的字段,同时也含有一个删除当前记录的“删除按钮”:
<html>
<body>
<h2>Delete Record</h2>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
cid=Request.Form("customerID"
if Request.form("companyname")="" then
set rs=Server.CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM customers WHERE customerID='" & cid & "'",conn
%>
<form method="post" action="demo_delete.asp">
<table>
<%for each x in rs.Fields%>
<tr>
<td><%=x.name%></td>
<td><input name="<%=x.name%>" value="<%=x.value%>"></td>
<%next%>
</tr>
</table>
<br /><br />
<input type="submit" value="Delete record">
</form>
<%
else
sql="DELETE FROM customers"
sql=sql & " WHERE customerID='" & cid & "'"
on error resume next
conn.Execute sql
if err<>0 then
response.write("No update permissions!")
else
response.write("Record " & cid & " was deleted!")
end if
end if
conn.close
%>
</body>
</html>
ADO 通过 GetString() 加速脚本
请使用 GetString() 方法来加速您的 ASP 脚本(来代替多行的 Response.Write)。
实例
如何使用 GetString() 在 HTML 表格中显示记录集中的数据。
多行 Response.Write
下面的例子演示了在 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>
<td><%Response.Write(rs.fields("Companyname"))%></td>
<td><%Response.Write(rs.fields("Contactname"))%></td>
</tr>
<%rs.MoveNext
loop%>
</table>
<%
rs.close
conn.close
set rs = Nothing
set conn = Nothing
%>
</body>
</html>
对于一个大型的查询来说,这样做会增加脚本的处理时间,这是由于服务器需要处理大量的 Response.Write 命令。
解决的办法是创建全部字符串,从 <table> 到 </table>,然后将其输出 - 只使用一次 Response.Write。
GetString() 方法
GetString() 方法使我们有能力仅使用一次 Response.Write,就可以显示所有的字符串。同时它甚至不需要 do..loop 代码以及条件测试来检查记录集是否处于 EOF。
语法
str = rs.GetString(format,rows,coldel,rowdel,nullexpr)
如需使用来自记录集的数据创建一个 HTML 表格,我们仅仅需要使用以上参数中的三个(所有的参数都是可选的):
· coldel - 用作列分隔符的 HTML
· rowdel - 用作行分隔符的 HTML
· nullexpr - 当列为空时所使用的 HTML
注释:GetString() 方法是 ADO 2.0 的特性。您可从下面的地址下载 ADO 2.0:http://www.microsoft.com/data/download.htm
在下面的例子中,我们将使用 GetString() 方法,把记录集存为一个字符串:
<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
str=rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
%>
<table border="1" width="100%">
<tr>
<td><%Response.Write(str)%></td>
</tr>
</table>
<%
rs.close
conn.close
set rs = Nothing
set conn = Nothing
%>
</body>
</html>
上面的变量 str 包含着由 SELECT 语句返回的所有列和行的一个字符串。在每列之间会出现 </td><td>,在每行之间会出现 </td></tr><tr><td>。这样,仅使用一次 Response.Write,我们就得到了需要的 HTML。
ADO Command 对象
Command 对象
ADO Command 对象用于执行面向数据库的一次简单查询。此查询可执行诸如创建、添加、取回、删除或更新记录等动作。
如果该查询用于取回数据,此数据将以一个 RecordSet 对象返回。这意味着被取回的数据能够被 RecordSet 对象的属性、集合、方法或事件进行操作。
Command 对象的主要特性是有能力使用存储查询和带有参数的存储过程。
ProgID
set objCommand=Server.CreateObject("ADODB.command")
属性
属性 | 描述 |
设置或返回包含了定义连接或 Connection 对象的字符串。 | |
设置或返回包含提供者(provider)命令(如 SOL 语句、表格名称或存储的过程调用)的字符串值。默认值为 ""(零长度字符串)。 | |
设置或返回长整型值,该值指示等待命令执行的时间(单位为秒)。默认值为 30。 | |
设置或返回一个 Command 对象的类型 | |
设置或返回一个 Command 对象的名称 | |
指示执行前是否保存命令的编译版本(已经准备好的版本)。 | |
返回一个值,此值可描述该 Command 对象处于打开、关闭、连接、执行还是取回数据的状态。 |
方法
方法 | 描述 |
取消一个方法的一次执行。 | |
创建一个新的 Parameter 对象 | |
执行 CommandText 属性中的查询、SQL 语句或存储过程。 |
集合
集合 | 描述 |
Parameters | 包含一个 Command 对象的所有 Parameter 对象。 |
Properties | 包含一个 Command 对象的所有 Property 对象。 |
ADO Connection 对象
Connection 对象
ADO Connection 对象用于创建一个到达某个数据源的开放连接。通过此连接,您可以对一个数据库进行访问和操作。
如果需要多次访问某个数据库,您应当使用 Connection 对象来建立一个连接。您也可以经由一个 Command 或 Recordset 对象传递一个连接字符串来创建某个连接。不过,此类连接仅仅适合一次具体的简单的查询。
ProgID
set objConnection=Server.CreateObject("ADODB.connection")
属性
属性 | 描述 |
设置或返回 Connection 对象的属性。 | |
指示在终止尝试和产生错误之前执行命令期间需等待的时间。 | |
设置或返回用于建立连接数据源的细节信息。 | |
指示在终止尝试和产生错误前建立连接期间所等待的时间。 | |
设置或返回游标服务的位置。 | |
指示 Connection 对象的默认数据库。 | |
指示 Connection 对象的隔离级别。 | |
设置或返回 provider 的访问权限。 | |
设置或返回 Connection 对象提供者的名称。 | |
返回一个描述连接是打开还是关闭的值。 | |
返回 ADO 的版本号。 |
方法
方法 | 描述 |
开始一个新事务。 | |
取消一次执行。 | |
关闭一个连接。 | |
保存任何更改并结束当前事务。 | |
执行查询、SQL 语句、存储过程或 provider 具体文本。 | |
打开一个连接。 | |
从 provider 返回有关数据源的 schema 信息。 | |
取消当前事务中所作的任何更改并结束事务。 |
事件
注释:您无法使用 VBScript or JScript 来处理事件(仅能使用 Visual Basic、Visual C++ 以及 Visual J++ 语言处理事件)。
事件 | 描述 |
在 BeginTrans 操作之后被触发。 | |
在 CommitTrans 操作之后被触发。 | |
在一个连接开始后被触发。 | |
在一个连接结束之后被触发。 | |
在一条命令执行完毕后被触发。 | |
假如在一个 ConnectionEvent 操作过程中警告发生,则触发该事件。 | |
在 RollbackTrans 操作之后被触发。 | |
在一个连接开始之前被触发。 | |
在一条命令被执行之前被触发。 |
集合
集合 | 描述 |
Errors | 包含 Connection 对象的所有 Error 对象。 |
Properties | 包含 Connection 对象的所有 Property 对象。 |
ADO Error 对象
Error 对象
ADO Error 对象包含与单个操作(涉及提供者)有关的数据访问错误的详细信息。
ADO 会因每次错误产生一个 Error 对象。每个 Error 对象包含具体错误的详细信息,且 Error 对象被存储在 Errors 集合中。要访问这些错误,就必须引用某个具体的连接。
循环遍历 Errors 集合:
<%
for each objErr in objConn.Errors
response.write("<p>")
response.write("Description: ")
response.write(objErr.Description & "<br />")
response.write("Help context: ")
response.write(objErr.HelpContext & "<br />")
response.write("Help file: ")
response.write(objErr.HelpFile & "<br />")
response.write("Native error: ")
response.write(objErr.NativeError & "<br />")
response.write("Error number: ")
response.write(objErr.Number & "<br />")
response.write("Error source: ")
response.write(objErr.Source & "<br />")
response.write("SQL state: ")
response.write(objErr.SQLState & "<br />")
response.write("</p>")
next
%>
语法
objErr.property
属性
属性 | 描述 |
返回一个错误描述。 | |
返回 Microsoft Windows help system 中某个主题的内容 ID。 | |
返回 Microsoft Windows help system 中帮助文件的完整路径。 | |
返回来自 provider 或数据源的错误代码。 | |
返回可标识错误的一个唯一的数字。 | |
返回产生错误的对象或应用程序的名称。 | |
返回一个 5 字符的 SQL 错误码。 |
ADO Field 对象
Field 对象
ADO Field 对象包含有关 Recordset 对象中某一列的信息。Recordset 中的每一列对应一个 Field 对象。
ProgID
set objField=Server.CreateObject("ADODB.field")
属性
属性 | 描述 |
返回一个字段值的实际长度。 | |
设置或返回 Field 对象的属性。 | |
返回Field 对象被定义的大小 | |
设置或返回 Field 对象的名称。 | |
设置或返回 Field 对象中的值所允许的小数位数。 | |
返回某个字段的原始值。 | |
设置或返回当表示 Field 对象中的数值时所允许的数字的最大数。 | |
返回 Field 对象的状态。 | |
设置或返回 Field 对象的类型。 | |
返回一个字段的当前值。 | |
设置或返回 Field 对象的值。 |
方法
方法 | 描述 |
把大型的二进制或文本数据追加到 Field 对象 | |
返回大型二进制或文本 Field 对象的全部或部分内容。 |
集合
集合 | 描述 |
Properties | 包含一个 Field 对象的所有 Property 对象。 |
ADO Parameter 对象
Parameter 对象
ADO Parameter 对象可提供有关被用于存储过程或查询中的一个单个参数的信息。
Parameter 对象在其被创建时被添加到 Parameters 集合。Parameters 集合与一个具体的 Command 对象相关联,Command 对象使用此集合在存储过程和查询内外传递参数。
参数被用来创建参数化的命令。这些命令(在它们已被定义和存储之后)使用参数在命令执行前来改变命令的某些细节。例如,SQL SELECT 语句可使用参数定义 WHERE 子句的匹配条件,而使用另一个参数来定义 SORT BY 子句的列的名称。
有四种类型的参数:input 参数、output 参数、input/output 参数 以及 return 参数。
语法
objectname.property
objectname.method
属性
属性 | 描述 |
设置或返回一个 Parameter 对象的属性。 | |
设置或返回某个参数如何传递到存储过程或从存储过程传递回来。 | |
设置或返回一个 Parameter 对象的名称。 | |
设置或返回一个 Parameter 对象的数值的小数点右侧的数字数目。 | |
设置或返回当表示一个参数中数值时所允许数字的最大数目。 | |
设置或返回 Parameter 对象中的值的最大大小(按字节或字符)。 | |
设置或返回一个 Parameter 对象的类型。 | |
设置或返回一个 Parameter 对象的值。 |
方法
方法 | 描述 |
把长二进制或字符数据追加到一个 Parameter 对象。 | |
从 Parameters 集合中删除一个对象。 |
ADO Property 对象
Property 对象
ADO 对象有两种类型的属性:内置属性和动态属性。
内置属性是在 ADO 中实现并立即可用于任何新对象的属性,此时使用 MyObject.Property 语法。它们不会作为 Property 对象出现在对象的 Properties 集合中,因此,虽然可以更改它们的值,但无法更改它们的特性。
ADO Property 对象表示 ADO 对象的动态特性,这种动态特性是被 provider 定义的。
每个与 ADO 对话的 provider 拥有不同的方式与 ADO 进行交互。所以,ADO 需要通过某种方式来存储有关 provider 的信息。解决方法是 provider 为 ADO 提供具体的信息(动态属性)。ADO 把每个 provider 属性存储在一个 Property 对象中,而 Property 对象相应地也被存储在 Properties 集合中。此集合会被分配到 Command 对象、Connection 对象、Field 对象 或者 Recordset 对象。
例如,指定给提供者的属性可能会指示 Recordset 对象是否支持事务或更新。这些附加的属性将作为 Property 对象出现在该 Recordset 对象的 Properties 集合中。
ProgID
set objProperty=Server.CreateObject("ADODB.property")
属性
属性 | 描述 |
Attributes | 返回一个 Property 对象的属性 |
Name | 设置或返回一个 Property 对象的名称 |
Type | 返回 Property 的类型 |
Value | 设置或返回 一个 Property 对象的值 |
ADO Record 对象
Record 对象 (ADO version 2.5)
ADO Record 对象用于容纳记录集中的一行、或文件系统的一个文件或一个目录。
ADO 2.5 之前的版本仅能够访问结构化的数据库。在一个结构化的数据库中,每个表在每一行均有确切相同的列数,并且每一列都由相同的数据类型组成。
Record 对象允许访问行与行之间的列数且/或数据类型不同的数据集。
语法
objectname.property
objectname.method
属性
属性 | 描述 |
ActiveConnection | 设置或返回 Record 对象当前所属的 Connection 对象。 |
Mode | 设置或返回在Record 对象中修改数据的有效权限。 |
ParentURL | 返回父 Record 的绝对URL。 |
RecordType | 返回 Record 对象的类型。 |
Source | 设置或返回 Record 对象的 Open 方法的 src 参数。 |
State | 返回 Record 对象的状态。 |
方法
方法 | 描述 |
Cancel | 取消一次 CopyRecord、DeleteRecord、MoveRecord 或 Open 调用的执行。 |
Close | 关闭一个 Record 对象。 |
CopyRecord | 把文件或目录拷贝到另外一个位置。 |
DeleteRecord | 删除一个文件或目录。 |
GetChildren | 返回一个 Recordset 对象,其中的每一行表示目录中的文件或子目录。 |
MoveRecord | 把文件或目录移动到另外一个位置。 |
Open | 打开一个已有的 Record 对象或创建一个新的文件或目录。 |
集合
集合 | 描述 |
Properties | 特定提供者属性的一个集合。 |
Fields | 包含 Record 对象中的所有 Field 对象。 |
Fields 集合的属性
属性 | 描述 |
Count | 返回 fields 集合中的项目数。起始值为 0。 例子: countfields = rec.Fields.Count |
Item(named_item/number) | 返回 fields 集合中的某个指定的项目。 例子: itemfields = rec.Fields.Item(1) 或者 itemfields = rec.Fields.Item("Name") |
ADO Recordset 对象
实例
GetRows
本例演示如何使用 GetRows 方法。
Recordset 对象
ADO Recordset 对象用于容纳一个来自数据库表的记录集。一个 Recordset 对象由记录和列(字段)组成。
在 ADO 中,此对象是最重要且最常用于对数据库的数据进行操作的对象。
ProgID
set objRecordset=Server.CreateObject("ADODB.recordset")
当您首次打开一个 Recordset 时,当前记录指针将指向第一个记录,同时 BOF 和 EOF 属性为 False。如果没有记录,BOF 和 EOF 属性为 True。
Recordset 对象能够支持两种更新类型:
立即更新 - 一旦调用 Update 方法,所有更改被立即写入数据库。批更新 - provider 将缓存多个更改,然后使用 UpdateBatch 方法把这些更改传送到数据库。
在 ADO,定义了 4 中不同的游标(指针)类型:
· 动态游标 - 允许您查看其他用户所作的添加、更改和删除
· 键集游标 - 类似动态游标,不同的是您无法查看有其他用户所做的添加,并且它会防止您访问其他用户已删除的记录。其他用户所做的数据更改仍然是可见的。
· 静态游标 - 提供记录集的静态副本,可用来查找数据或生成报告。此外,由其他用户所做的添加、更改和删除将是不可见的。当您打开一个客户端 Recordset 对象时,这是唯一被允许的游标类型。
· 仅向前游标 - 只允许在 Recordset 中向前滚动。此外,由其他用户所做的添加、更改和删除将是不可见的。
可通过 CursorType 属性或 Open 方法中的 CursorType 参数来设置游标的类型。
注释:并非所有的提供者(providers)支持 Recordset 对象的所有方法和属性。
属性
属性 | 描述 |
AbsolutePage | 设置或返回一个可指定 Recordset 对象中页码的值。 |
AbsolutePosition | 设置或返回一个值,此值可指定 Recordset 对象中当前记录的顺序位置(序号位置)。 |
ActiveCommand | 返回与 Recordset 对象相关联的 Command 对象。 |
ActiveConnection | 如果连接被关闭,设置或返回连接的定义,如果连接打开,设置或返回当前的 Connection 对象。 |
BOF | 如果当前的记录位置在第一条记录之前,则返回 true,否则返回 fasle。 |
Bookmark | 设置或返回一个书签。此书签保存当前记录的位置。 |
CacheSize | 设置或返回能够被缓存的记录的数目。 |
CursorLocation | 设置或返回游标服务的位置。 |
CursorType | 设置或返回一个 Recordset 对象的游标类型。 |
DataMember | 设置或返回要从 DataSource 属性所引用的对象中检索的数据成员的名称。 |
DataSource | 指定一个包含要被表示为 Recordset 对象的数据的对象。 |
EditMode | 返回当前记录的编辑状态。 |
EOF | 如果当前记录的位置在最后的记录之后,则返回 true,否则返回 fasle。 |
Filter | 返回一个针对 Recordset 对象中数据的过滤器。 |
Index | 设置或返回 Recordset 对象的当前索引的名称。 |
LockType | 设置或返回当编辑 Recordset 中的一条记录时,可指定锁定类型的值。 |
MarshalOptions | 设置或返回一个值,此值指定哪些记录被返回服务器。 |
MaxRecords | 设置或返回从一个查询返回 Recordset 对象的的最大记录数目。 |
PageCount | 返回一个 Recordset 对象中的数据页数。 |
PageSize | 设置或返回 Recordset 对象的一个单一页面上所允许的最大记录数。 |
RecordCount | 返回一个 Recordset 对象中的记录数目。 |
Sort | 设置或返回一个或多个作为 Recordset 排序基准的字段名。 |
Source | 设置一个字符串值,或一个 Command 对象引用,或返回一个字符串值,此值可指示 Recordset 对象的数据源。 |
State | 返回一个值,此值可描述是否 Recordset 对象是打开、关闭、正在连接、正在执行或正在取回数据。 |
Status | 返回有关批更新或其他大量操作的当前记录的状态。 |
StayInSync | 设置或返回当父记录位置改变时对子记录的引用是否改变。 |
方法
方法 | 描述 |
AddNew | 创建一条新记录。 |
Cancel | 撤销一次执行。 |
CancelBatch | 撤销一次批更新。 |
CancelUpdate | 撤销对 Recordset 对象的一条记录所做的更改。 |
Clone | 创建一个已有 Recordset 的副本。 |
Close | 关闭一个 Recordset。 |
CompareBookmarks | 比较两个书签。 |
Delete | 删除一条记录或一组记录。 |
Find | 搜索一个 Recordset 中满足指定某个条件的一条记录。 |
GetRows | 把多条记录从一个 Recordset 对象中拷贝到一个二维数组中。 |
GetString | 将 Recordset 作为字符串返回。 |
Move | 在 Recordset 对象中移动记录指针。 |
MoveFirst | 把记录指针移动到第一条记录。 |
MoveLast | 把记录指针移动到最后一条记录。 |
MoveNext | 把记录指针移动到下一条记录。 |
MovePrevious | 把记录指针移动到上一条记录。 |
NextRecordset | 通过执行一系列命令清除当前 Recordset 对象并返回下一个 Recordset。 |
Open | 打开一个数据库元素,此元素可提供对表的记录、查询的结果或保存的 Recordset 的访问。 |
Requery | 通过重新执行对象所基于的查询来更新 Recordset 对象中的数据。 |
Resync | 从原始数据库刷新当前 Recordset 中的数据。 |
Save | 把 Recordset 对象保存到 file 或 Stream 对象中。 |
Seek | 搜索 Recordset 的索引以快速定位与指定的值相匹配的行,并使其成为当前行。 |
Supports | 返回一个布尔值,此值可定义 Recordset 对象是否支持特定类型的功能。 |
Update | 保存所有对 Recordset 对象中的一条单一记录所做的更改。 |
UpdateBatch | 把所有 Recordset 中的更改存入数据库。请在批更新模式中使用。 |
事件
Note: You cannot handle events using VBScript or JScript (only Visual Basic, Visual C++, and Visual J++ languages can handle events).
事件 | 描述 |
EndOfRecordset | 当试图移动到超过 Recordset 结尾的行时被触发。 |
FetchComplete | 当异步操作中的所有记录均被读取后被触发。 |
FetchProgress | 在异步操作期间被定期地触发,报告已读取多少记录。 |
FieldChangeComplete | Field 对象的值更改被触发。 |
MoveComplete | Recordset 中的当前位置更改后被触发。 |
RecordChangeComplete | 一条记录更改之后被触发。 |
RecordsetChangeComplete | 在 Recordset 更改之后被触发。 |
WillChangeField | 在 Field 对象的值更改之前被触发 |
WillChangeRecord | 在一条记录更改之前被触发。 |
WillChangeRecordset | 在 Recordset 更改之前被触发。 |
WillMove | 在 Recordset 中的当前位置更改之前被触发。 |
集合
集合 | 描述 |
Fields | 指示在此 Recordset 对象中 Field 对象的数目。 |
Properties | 包含所有 Recordset 对象中的 Property 对象。 |
Fields 集合的属性
属性 | 描述 |
Count | 返回 fields 集合中项目的数目。以 0 起始。 例子: countfields = rs.Fields.Count |
Item(named_item/number) | 返回 fields 集合中的某个指定的项目。 例子: itemfields = rs.Fields.Item(1) 或者 itemfields = rs.Fields.Item("Name") |
Properties 集合的属性
属性 | 描述 |
Count | 返回 properties 集合中项目的数目。以 0 起始。 例子: countprop = rs.Properties.Count |
Item(named_item/number) | 返回 properties 集合中某个指定的项目。 例子: itemprop = rs.Properties.Item(1) 或者 itemprop = rs.Properties.Item("Name") |
ADO Stream 对象
Stream 对象 (ADO version 2.5)
ADO Stream 对象用于读写以及处理二进制数据或文本流。
Stream 对象可通过三种方法获得:
· 通过指向包含二进制或文本数据的对象(通常是文件)的 URL。此对象可以是简单的文档、表示结构化文档的 Record 对象或文件夹。
· 通过将 Stream 对象实例化。这些 Stream 对象可用来存储用于应用程序的数据。跟与 URL 相关联的 Stream 或 Record 的默认 Stream 不同,实例化的 Stream 在默认情况下与基本源没有关联。
· 通过打开与 Record 对象相关联的默认 Stream 对象。打开 Record 时便可获取与 Record 对象相关联的默认流。只需打开该流便可删除一个往返过程。
语法
objectname.property
objectname.method
属性
属性 | 描述 |
CharSet | 指定用于存储 Stream 的字符集。 |
EOS | 返回当前位置是否位于流的结尾。 |
LineSeparator | 设置或返回用在文本 Stream 对象中的分行符。 |
Mode | 设置或返回供修改数据的可用权限。 |
Position | 设置或返回从 Stream 对象开始处的当前位置(按字节计算)。 |
Size | 返回一个打开的 Stream 对象的大小。 |
State | 返回一个描述 Stream 是打开还是关闭的值。 |
Type | 设置或返回 Stream 对象中的数据的类型。 |
方法
方法 | 描述 |
Cancel | 取消对 Stream 对象的 Open 调用的执行。 |
Close | 关闭一个 Stream 对象。 |
CopyTo | 把指定数目的字符/比特从一个 Stream 对象拷贝到另外一个 Stream 对象。 |
Flush | 把 Stream 缓冲区中的内容发送到相关联的下层对象。 |
LoadFromFile | 把文件的内容载入 Stream 对象。 |
Open | 打开一个 Stream 对象。 |
Read | 从一个二进制 Stream 对象读取全部流或指定的字节数。 |
ReadText | 从一个文本 Stream 对象中读取全部流、一行或指定的字节数。 |
SaveToFile | 把一个 Stream 对象的二进制内容保存到某个文件。 |
SetEOS | 设置当前位置为流的结尾 (EOS) |
SkipLine | 在读取一个文本流时跳过一行。 |
Write | 把二进制数据写到一个二进制 Stream 对象。 |
WriteText | 把字符数据写到一个文本 Stream 对象。 |
ADO 数据类型
下面的表格列出了 Access、SQL Server 与 Oracle 之间的数据类型映射:
DataType Enum | Value | Access | SQLServer | Oracle |
adBigInt | 20 |
| BigInt (SQL Server 2000 +) |
|
adBinary | 128 |
| Binary | Raw * |
adBoolean | 11 | YesNo | Bit |
|
adChar | 129 |
| Char | Char |
adCurrency | 6 | Currency | Money |
|
adDate | 7 | Date | DateTime |
|
adDBTimeStamp | 135 | DateTime (Access 97 (ODBC)) | DateTime | Date |
adDecimal | 14 |
|
| Decimal * |
adDouble | 5 | Double | Float | Float |
adGUID | 72 | ReplicationID (Access 97 (OLEDB)), (Access 2000 (OLEDB)) | UniqueIdentifier (SQL Server 7.0 +) |
|
adIDispatch | 9 |
|
|
|
adInteger | 3 | AutoNumber | Identity (SQL Server 6.5) | Int * |
adLongVarBinary | 205 | OLEObject | Image | Long Raw * |
adLongVarChar | 201 | Memo (Access 97) | Text | Long * |
adLongVarWChar | 203 | Memo (Access 2000 (OLEDB)) | NText (SQL Server 7.0 +) | NClob (Oracle 8.1.x) |
adNumeric | 131 | Decimal (Access 2000 (OLEDB)) | Decimal | Decimal |
adSingle | 4 | Single | Real |
|
adSmallInt | 2 | Integer | SmallInt |
|
adUnsignedTinyInt | 17 | Byte | TinyInt |
|
adVarBinary | 204 | ReplicationID (Access 97) | VarBinary |
|
adVarChar | 200 | Text (Access 97) | VarChar | VarChar |
adVariant | 12 |
| Sql_Variant (SQL Server 2000 +) | VarChar2 |
adVarWChar | 202 | Text (Access 2000 (OLEDB)) | NVarChar (SQL Server 7.0 +) | NVarChar2 |
adWChar | 130 |
| NChar (SQL Server 7.0 +) |
|
* 在 Oracle 8.0.x 中 - decimal 和 int 等于 number 和 number(10)。
· ADO Connection 对象
ADO Attributes 属性
定义和用法
Attributes 属性可设置或返回 Long 值,该值可指示对象的一项或多项特性。
注释:设置多个属性时,可以将适当的常量相加。如果将属性值设置为包括不兼容常量的和,将会发生错误。
对象 | Attributes 属性的描述 |
Connection | Attributes 属性对 Connection 对象拥有读写权限。并且其值可以是一个或多个 XactAttributeEnum 值的和。默认值为零 (0)。 |
Parameter | Attributes 属性对Parameter 对象拥有读写权限。并且其值可以是任意一个或多个 ParameterAttributesEnum 值的和。默认值为 adParamSigned。 |
Field | 当 Attributes 属性被用于创建 Recordset 时,它拥有读写权限,但是当您打开一个已有的 Recordset 时,它是只读的。Attributes 属性可以是一个或多个 FieldAttributeEnum 值的和。 |
Property | 对于 Property 对象,Attributes 属性是只读的。并且其值可以是任意一个或多个 PropertyAttributesEnum 值的和。 |
语法
object.Attributes
实例
针对 Connection 对象:
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
response.write(conn.Attributes)
conn.close
%>
针对 Field 对象:
<%
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 orders", conn
set f=Server.CreateObject("ADODB.Field")
'Display the field attributes of the Orders Table
for each f in rs.Fields
response.write("Attr:" & f.Attributes & "<br />")
response.write("Name:" & f.Name & "<br />")
response.write("Value:" & f.Value & "<br />")
Next
rs.Close
conn.close
set rs=nothing
set conn=nothing
%>
针对 Property 对象:
<%
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 orders", conn
set prop=Server.CreateObject("ADODB.Property")
'Display the property attributes of the Orders Table
for each prop in rs.Properties
response.write("Attr:" & prop.Attributes & "<br />")
response.write("Name:" & prop.Name & "<br />")
response.write("Value:" & prop.Value & "<br />")
next
rs.close
conn.close
set rs=nothing
set conn=nothing
%>
XactAttributeEnum 值
常量 | 值 | 描述 |
adXactAbortRetaining | 262144 | 当调用 RollbackTrans,自动启动一个新事务。 |
adXactCommitRetaining | 131072 | 当调用 CommitTrans,自动启动新事务。 |
ParameterAttributesEnum Values
常量 | 值 | 描述 |
adParamSigned | 16 | 该参数接受带符号的值。 |
adParamNullable | 64 | 该参数接受 Null 值。 |
adParamLong | 128 | 该参数接受长二进制数据。 |
FieldAttributeEnum Values
常量 | 值 | 描述 |
adFldCacheDeferred | 0x1000 | 指示提供者缓存字段值,并且指示对缓存的进行读取。 |
adFldFixed | 0x10 | 指示该字段包含定长数据。 |
adFldIsChapter | 0x2000 | 指示该字段包含一个子集值,指定与此父字段有关的特定子记录集。通常子集字段与数据构形或过滤器一起使用。 |
adFldIsCollection | 0x40000 | 该字段指定由记录表示的资源是其他资源的集合(如文件夹)而不仅是简单资源(如文本文件)。 |
adFldIsDefaultStream | 0x20000 | 该字段包含由记录表示的资源的默认流。例如,默认流可以是 Web 站点根文件夹的 HTML 内容,在指定根 URL 时自动提供。 |
adFldIsNullable | 0x20 | 该字段接受 Null 值。 |
adFldIsRowURL | 0x10000 | 该字段包含 URL,它命名了记录表示的数据存储中的资源。 |
adFldKeyColumn | 0x8000 | 该字段是基本行集合的主键。还可指示该字段是复合主键的一部分。 |
adFldLong | 0x80 | 该字段是长二进制字段。还指示能够使用 AppendChunk 和 GetChunk 方法。 |
adFldMayBeNull | 0x40 | 可从该字段读取 Null 值。 |
adFldMayDefer | 0x2 | 该字段被延期,即该字段值不是和整个记录一起从数据源检索,而是在显式访问它们时检索。 |
adFldNegativeScale | 0x4000 | 该字段表示来自支持负范围值的列的数字值。该范围由 NumericScale 属性指定。 |
adFldRowID | 0x100 | 该字段包含持久行标识符,该标识符无法被写入,并且除了标识行以外没有任何意义,例如记录编号、唯一标识符等。 |
adFldRowVersion | 0x200 | 该字段包含用于跟踪更新的某种时间或日期戳。 |
adFldUnknownUpdatable | 0x8 | 提供者无法确定用户是否可以写入字段。 |
adFldUnspecified | · -1 · 0xFFFFFFFF | 提供者没有指定字段属性。 |
adFldUpdatable | 0x4 | 用户可以写入字段。 |
PropertyAttributesEnum Values
常量 | 值 | 描述 |
adPropNotSupported | 0 | 提供者不支持该属性。 |
adPropRequired | 1 | 在初始化数据源之前用户必须指定该属性的值。 |
adPropOptional | 2 | 在初始化数据源之前用户不必指定该属性的值。 |
adPropRead | 512 | 户可以读取该属性。 |
adPropWrite | 1024 | 用户可以设置该属性。 |
ADO CommandTimeout 属性
定义和用法
CommandTimeout 属性可设置或返回执行命令期间在终止尝试和产生错误之前需等待的时间。默认值为 30。
语法
object.CommandTimeout
实例
针对 Command 对象:
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set comm=Server.CreateObject("ADODB.Command")
comm.CommandTimeout=10
response.write(comm.CommandTimeout)
conn.close
%>
针对 Connection 对象:
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
conn.CommandTimeout=10
response.write(conn.CommandTimeout)
conn.close
%>
定义和用法
ConnectionString 属性可设置或返回用于建立到数据源的连接的信息。
注释:您不能同时使用 Provider 和 File Name 参数。
语法
objconn.ConnectionString="para1=value;para2=value;etc;"
ConnectionString 属性有 5 个参数:
参数 | 描述 |
Provider | 用于连接的提供者的名称。 |
File Name | 提供者特有的文件(例如,持久保留的数据源对象)的名称,这些文件中包含预置的连接信息。 |
Remote Provider | 当打开客户端连接时使用的提供者的名称。(仅限于远程数据服务。) |
Remote Server | 当打开客户端连接时使用的服务器的路径名称。(仅限于远程数据服务。) |
url | 标识资源(比如文件或目录)的绝对 URL。 |
实例
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0"
conn.open server.mappath("database.mdb")
conn.close
%>
ADO ConnectionTimeout 属性
定义和用法
ConnectionTimeout 属性可设置或返回在终止尝试和产生错误之前打开连接需要等待的秒数。默认是 15 秒。
语法
objconn.ConnectionTimeout
实例
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0"
conn.ConnectionTimeout=30
conn.open server.mappath("database.mdb")
conn.close
%>
ADO CursorLocation 属性
定义和用法
CursorLocation 属性可设置或返回一个 long 值,该值指示游标服务的位置。可被设置为 CursorLocationEnum 值之一。默认值是 AdUseServer。
游标用于:
· 控制记录定位
· 控制其他用户对数据库所作的更改的可视性
· 控制数据可更新性
注释:Recordset 对象将从与它们相关联的连接上自动继承此设置。
注释:此属性在 Connection 或已关闭的 Recordset 上为读/写,在打开的 Recordset 上为只读。
语法
objConnection.CursorLocation
objRecordset.CursorLocation
实例
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
sql="SELECT * FROM Customers"
rs.CursorLocation=adUseClient
rs.CursorType=adOpenStatic
rs.LockType=adLockBatchOptimistic
rs.Open sql,conn
rs.Close
conn.Close
%>
ADO DefaultDatabase 属性
定义和用法
DefaultDatabase 属性可设置或返回一个字符串值,该值是特定 Connection 对象上的默认数据库的名称。
语法
objconn.DefaultDatabase
实例
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.DefaultDatabase="northwind"
set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "customers",conn
....
rs.Close
conn.close
%>
窗体顶端
Search:
窗体底端
赞助商链接
-
ADO IsolationLevel 属性
定义和用法
IsolationLevel 属性可设置或返回 Connection 对象的隔离级别。该值是一个 IsolationLevelEnum 值。默认是 adXactChaos。
注释:IsolationLevel 设置直到下次调用 BeginTrans 方法时才生效。
语法
objconn.IsolationLevel
实例
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.IsolationLevel=adXactIsolated
conn.Open(Server.Mappath("northwind.mdb"))
response.write(conn.IsolationLevel)
conn.Close
%>
IsolationLevelEnum
常量 | 值 | 描述 |
adXactUnspecified | -1 | 无法使用指定的隔离级别,因为提供者正在使用不同的隔离级别,而且该级别无法被确定。 |
adXactChaos | 16 | 无法覆盖更高级别的事务。 |
adXactBrowse | 256 | 可以从一个事务中查看其他事务中未提交的更改。 |
adXactReadUncommitted | 256 | 与 adXactBrowse 相同。 |
adXactCursorStability | 4096 | 只能从一个事务中查看其他事务中提交的更改。 |
adXactReadCommitted | 4096 | 与 adXactCursorStability 相同。 |
adXactRepeatableRead | 65536 | 不能从一个事务中查看其他事务中所作的修改,但是重新查询可以检索新的 Recordset 对象。 |
adXactIsolated | 1048576 | 该事务与其他事务隔离执行。 |
adXactSerializable | 1048576 | 与 adXactIsolated 相同。 |
ADO Mode 属性
定义和用法
Mode 属性可设置或返回一个 ConnectModeEnum 值,该值指示在 Connection, Record 或 Stream 对象中修改数据的权限。在对象关闭时,此属性为读写,在对象打开时为只读。
· Connection 对象 - 默认是 adModeUnknown
· Record 对象 - 默认是 adModeRead
· Stream 对象 - 默认是 adModeRead 或 adModeUnknown
注释:该属性只能在 Connection 对象关闭时设置。
语法
object.Mode
实例
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Mode=adModeReadWrite
conn.Open(Server.Mappath("northwind.mdb"))
response.write(conn.Mode)
conn.Close
%>
ConnectModeEnum
常量 | 值 | 描述 |
adModeUnknown | 0 | 默认值。权限尚未设置或不能确定权限。 |
adModeRead | 1 | 只读权限。 |
adModeWrite | 2 | 只写权限。 |
adModeReadWrite | 3 | 读/写权限。 |
adModeShareDenyRead | 4 | 禁止其他人以读权限打开连接。 |
adModeShareDenyWrite | 8 | 禁止其他人以写权限打开连接。 |
adModeShareExclusive | 12 | 禁止其他人打开连接。 |
adModeShareDenyNone | 16 | 允许其他人以任何权限打开连接。不拒绝其他人的读或写访问。 |
adModeRecursive | 0x400000 | 与 adModeShareDenyNone, adModeShareDenyWrite 或 adModeShareDenyRead 一起使用,对当前 Record 的所有子记录设置权限。 |
ADO Provider 属性
定义和用法
Provider 属性可设置或返回包含特定 Connection 对象的提供者名称的字符串值。默认是 MSDASQL (Microsoft OLE DB provider for ODBC)。请参阅 Provider 代码。
在连接关闭时,此属性是可读写的。
提供者名称也可通过 Connection 对象的 ConnectionString 属性或者 Open 方法的 ConnectionString 参数来设置。
注释:请不要在多个地方为特定的 Connection 设置 provider。
语法
connobj.Provider
实例
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
response.write(conn.Provider)
conn.close
%>
Provider 代码
Provider 代码 | Provider |
ADSDSOObject | Active Directory Services |
Microsoft.Jet.OLEDB.4.0 | Microsoft Jet databases |
MSDAIPP.DSO.1 | Microsoft Internet Publishing |
MSDAORA | Oracle databases |
MSDAOSP | Simple text files |
MSDASQL | Microsoft OLE DB provider for ODBC |
MSDataShape | Microsoft Data Shape |
MSPersist | Locally saved files |
SQLOLEDB | Microsoft SQL Server |