ADO 学习笔记(二)




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 集合中删除一个对象。

详细内容: http://www.w3school.com.cn/ado/ado_ref_parameter.asp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值