ADO 是什么?
ADO 是一项微软的技术
ADO 指 ActiveX 数据对象(ActiveX Data Objects)
ADO 是一个微软的 Active-X 组件
ADO 会随微软的 IIS 被自动安装
ADO 是一个访问数据库中数据的编程接口
从一个 ASP 页面内部访问数据库的通常的方法是:
创建一个到数据库的 ADO 连接
打开数据库连接
创建 ADO 记录集
从记录集提取您需要的数据
关闭记录集
关闭连接
创建一个 ADO 表记录集(ADO Table Recordset)
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0" // access 数据库
conn.Open "c:/webdata/northwind.mdb"
set rs=Server.CreateObject("ADODB.recordset")
rs.Open "Customers", conn
%>
或
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
显示字段名称和字段值(完整的代码段)
<%
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
%>
从form 表单更新数据库表中的记录
<%
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=sql & " VALUES "
sql=sql & "('" & Request.Form("custid") & "'," // custid 为name 属性
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>
<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>
使用 GetString()方法 在 HTML 表格中显示记录集中的数据,来加速您的 ASP 脚本
str = rs.GetString(format,rows,coldel,rowdel,nullexpr)
coldel - 用作列分隔符的 HTML
rowdel - 用作行分隔符的 HTML
nullexpr - 当列为空时所使用的 HTML
<%
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>
Command 对象
ADO Command 对象用于执行面向数据库的一次简单查询。此查询可执行诸如创建、添加、取回、删除或更新记录等动作。
如果该查询用于取回数据,此数据将以一个 RecordSet 对象返回。这意味着被取回的数据能够被 RecordSet 对象的属性、集合、方法或事件进行操作。
Command 对象的主要特性是有能力使用存储查询和带有参数的存储过程。
set objCommand=Server.CreateObject("ADODB.command")
属性
ActiveConnection 设置或返回包含了定义连接或 Connection 对象的字符串。
CommandText 设置或返回包含提供者(provider)命令(如 SOL 语句、表格名称或存储的过程调用)的字符串值。默认值为 ""(零长度字符串)。
CommandTimeout 设置或返回长整型值,该值指示等待命令执行的时间(单位为秒)。默认值为 30。
CommandType 设置或返回一个 Command 对象的类型
Name 设置或返回一个 Command 对象的名称
Prepared 指示执行前是否保存命令的编译版本(已经准备好的版本)。
State 返回一个值,此值可描述该 Command 对象处于打开、关闭、连接、执行还是取回数据的状态。
方法
Cancel 取消一个方法的一次执行。
CreateParameter 创建一个新的 Parameter 对象
Execute 执行 CommandText 属性中的查询、SQL 语句或存储过程。
集合
Parameters 包含一个 Command 对象的所有 Parameter 对象。
Properties 包含一个 Command 对象的所有 Property 对象。
Connection 对象
ADO Connection 对象用于创建一个到达某个数据源的开放连接。通过此连接,您可以对一个数据库进行访问和操作。
如果需要多次访问某个数据库,您应当使用 Connection 对象来建立一个连接。您也可以经由一个 Command 或 Recordset 对象传递一个连接字符串来创建某个连接。不过,此类连接仅仅适合一次具体的简单的查询。
set objConnection=Server.CreateObject("ADODB.connection")
属性
Attributes 设置或返回 Connection 对象的属性。
CommandTimeout 指示在终止尝试和产生错误之前执行命令期间需等待的时间。
ConnectionString 设置或返回用于建立连接数据源的细节信息。
ConnectionTimeout 指示在终止尝试和产生错误前建立连接期间所等待的时间。
CursorLocation 设置或返回游标服务的位置。
DefaultDatabase 指示 Connection 对象的默认数据库。
IsolationLevel 指示 Connection 对象的隔离级别。
Mode 设置或返回 provider 的访问权限。
Provider 设置或返回 Connection 对象提供者的名称。
State 返回一个描述连接是打开还是关闭的值。
Version 返回 ADO 的版本号。
方法
BeginTrans 开始一个新事务。
Cancel 取消一次执行。
Close 关闭一个连接。
CommitTrans 保存任何更改并结束当前事务。
Execute 执行查询、SQL 语句、存储过程或 provider 具体文本。
Open 打开一个连接。
OpenSchema 从 provider 返回有关数据源的 schema 信息。
RollbackTrans 取消当前事务中所作的任何更改并结束事务。
事件
注释:您无法使用 VBScript or JScript 来处理事件(仅能使用 Visual Basic、Visual C++ 以及 Visual J++ 语言处理事件)。
BeginTransComplete 在 BeginTrans 操作之后被触发。
CommitTransComplete 在 CommitTrans 操作之后被触发。
ConnectComplete 在一个连接开始后被触发。
Disconnect 在一个连接结束之后被触发。
ExecuteComplete 在一条命令执行完毕后被触发。
InfoMessage 假如在一个 ConnectionEvent 操作过程中警告发生,则触发该事件。
RollbackTransComplete 在 RollbackTrans 操作之后被触发。
WillConnect 在一个连接开始之前被触发。
WillExecute 在一条命令被执行之前被触发。
集合
Errors 包含 Connection 对象的所有 Error 对象。
Properties 包含 Connection 对象的所有 Property 对象。
Field 对象
ADO Field 对象包含有关 Recordset 对象中某一列的信息。Recordset 中的每一列对应一个 Field 对象。
ProgID
set objField=Server.CreateObject("ADODB.field")
属性
ActualSize 返回一个字段值的实际长度。
Attributes 设置或返回 Field 对象的属性。
DefinedSize 返回Field 对象被定义的大小
Name 设置或返回 Field 对象的名称。
NumericScale 设置或返回 Field 对象中的值所允许的小数位数。
OriginalValue 返回某个字段的原始值。
Precision 设置或返回当表示 Field 对象中的数值时所允许的数字的最大数。
Status 返回 Field 对象的状态。
Type 设置或返回 Field 对象的类型。
UnderlyingValue 返回一个字段的当前值。
Value 设置或返回 Field 对象的值。
方法
AppendChunk 把大型的二进制或文本数据追加到 Field 对象
GetChunk 返回大型二进制或文本 Field 对象的全部或部分内容。
集合
Properties 包含一个 Field 对象的所有 Property 对象。
arameter 对象
ADO Parameter 对象可提供有关被用于存储过程或查询中的一个单个参数的信息。
Parameter 对象在其被创建时被添加到 Parameters 集合。Parameters 集合与一个具体的 Command 对象相关联,Command 对象使用此集合在存储过程和查询内外传递参数。
参数被用来创建参数化的命令。这些命令(在它们已被定义和存储之后)使用参数在命令执行前来改变命令的某些细节。例如,SQL SELECT 语句可使用参数定义 WHERE 子句的匹配条件,而使用另一个参数来定义 SORT BY 子句的列的名称。
有四种类型的参数:input 参数、output 参数、input/output 参数 以及 return 参数。
语法
objectname.property
objectname.method
属性
Attributes 设置或返回一个 Parameter 对象的属性。
Direction 设置或返回某个参数如何传递到存储过程或从存储过程传递回来。
Name 设置或返回一个 Parameter 对象的名称。
NumericScale 设置或返回一个 Parameter 对象的数值的小数点右侧的数字数目。
Precision 设置或返回当表示一个参数中数值时所允许数字的最大数目。
Size 设置或返回 Parameter 对象中的值的最大大小(按字节或字符)。
Type 设置或返回一个 Parameter 对象的类型。
Value 设置或返回一个 Parameter 对象的值。
方法
AppendChunk 把长二进制或字符数据追加到一个 Parameter 对象。
Delete 从 Parameters 集合中删除一个对象。