我们这里介绍如何使用 Recordset 对象进行插入、更新和删除操作,顺便和 SQL 语句对比。 插入记录 AddNew 方法用于插入一条记录,首先打开一个记录集,并且这个记录具备可写特性,而后
顺晟科技
2021-07-06 17:26:44
288
在 ASP 中访问数据库使用的 ADO 组件。
ADO 是一项微软的技术。 ADO 指 ActiveX 数据对象(ActiveX Data Objects)。 ADO 是微软的 Active-X 组件。 ADO 会随 IIS 被自动安装 ADO 是一个访问数据库中数据的编程接口在进行数据访问前,我们首先先要建立和数据库的连接,ADO 通过 OLE DB 可以与许多数据库建立连接,ADO 中的 Connection 对象用于建立和数据库的连接。
在连接之前,我们需要建立一个数据连接字符串,请详细学习上一篇第二十一讲:
ASP入门(二十一) - 如何自己获取 ADO 连接字符串
连接字符串中 Data Source 一定要用 Sever.MapPath 方法来转化为服务器上路径。
加入了错误捕获代码(StartConnect.asp),连接数据库出现错误时,及时给用户友好的提示并终止页面的继续运行。代码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% '如果遇到错误,则不理会继续执行 On Error Resume Next Dim oConn, sConnString, sDBPath '数据库路径及文件名 sDBPath = "1NorthWind.mdb" '数据库连接字符串 sConnString = "Provider=Microsoft.ACE.OLEDB.15.0;Data Source=" & Server.MapPath(sDBPath) '建立 Connection 对象的实例 oConn Set oConn = Server.CreateObject("ADODB.Connection") '调用 oConn 的 Open 方法打开连接 oConn.Open sConnString '检测是否出错 Dim ErrInfo If Err Then Err.Clear '清空错误 ErrInfo = "数据库连接出现错误,请联系管理员!<br>" ErrInfo = ErrInfo & "终止页面继续运行" End If %>
我们已经建立了数据库连接,但是我们的网站中,会有很多文件都涉及到数据的操作,因此将数据库连接代码单独放置在一个文件(conn.asp)中,并将该文件放置到 根目录下的 include 目录中,数据库文件放置到 database 目录中,然后每个需要操作数据库的页面中,使用 #include file 代码来进行引入,如下代码:
<!--#include file="../include/conn.asp" -->
Connect 对象提供了 Execute 方法来执行 SQL 语句,代码如下:
<!--#include file="../include/conn.asp" --> <% Dim sql, RA sql = "DELETE FROM [运货商] WHERE [公司名称]='联邦货运'" oConn.Execute sql, RA 'RA返回的受影响的记录数,如果成功删除则显示 > 0 oConn.Close Set oConn = Nothing %>
我们的 Execute 方法后面多了一个 RA 参数,这个参数可以返回受影响的记录数。通过这个记录数来判断是否正确执行完 DELETE 任务。
这里我们将用到 Recordset 对象,该对象代表从查询返回的记录和那些记录的指针。‘
我们的例子将显示产品表中的名称、单位数量、单价信息,在 Access 中打开的数据表,所见到的结果如下:
在 ASP 页面中,我们通过输出 HTML 表格来显示这些信息,代码(ShowProducts.asp)如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <!doctype html> <html> <head> <meta charset="utf-8"> <title>显示 Northwind 表中 产品 表信息</title> </head> <body> <!--#include file="../include/conn.asp"--> <% Dim oRs, sql sql = "SELECT * FROM [产品]" Set oRs = Server.CreateObject("ADODB.Recordset") oRs.Open sql, oConn %> <h3>显示 Northwind 表中 产品 表信息</h3> <table> <tr> <th>编号</th> <th>产品名称</th> <th>单位数量</th> <th>单价</th> </tr> <% Dim num num = 1 Do While NOT oRs.EOF '判断是否处于记录集的最末端 %> <tr> <td><%=num%></td> <td><%=oRs("产品名称")%></td> <td><%=oRs("单位数量")%></td> <td><%=oRs("单价")%></td> </tr> <% num = num + 1 oRs.MoveNext '下一条记录 Loop '结束循环 Do While '关闭连接、清空对象 oRs.Close Set oRs = Nothing oConn.Close Set oConn = Nothing %> </table> </body> </html>
显示结果如下:
ADOConn.RAR
06
2021-07
06
2021-07
06
2021-07
06
2021-07
06
2021-07
06
2021-07