ASP入门(二十二)-连接数据库

时间:2022-11-07 23:43:15

ADO 简介

在 ASP 中访问数据库使用的 ADO 组件。

  • ADO 是一项微软的技术。
  • ADO 指 ActiveX 数据对象(ActiveX Data Objects)。
  • ADO 是微软的 Active-X 组件。
  • ADO 会随 IIS 被自动安装
  • ADO 是一个访问数据库中数据的编程接口

从 ASP 页面访问数据的方法

  1. 创建一个到数据库的 ADO 连接
  2. 打开数据库连接
  3. 创建 ADO 记录集
  4. 从记录集提取您需要的数据
  5. 关闭记录集
  6. 关闭连接

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" -->

执行 SQL 命令

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入门(二十二)-连接数据库

在 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 border="1">
<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>

显示结果如下:

ASP入门(二十二)-连接数据库

示例代码下载:

ADOConn.RAR

ASP入门(二十二)-连接数据库的更多相关文章

  1. ASP入门(十二)-Application对象

    在一起协同工作以完成某项任务的一组ASP文件称为一个应用程序.Application 对象用于把这些文件捆绑在一起. Application 对象用于在整个应用程序生存期间保存信息. Applicat ...

  2. 无废话ExtJs 入门教程十二&lbrack;下拉列表联动:Combobox&lowbar;Two&rsqb;

    无废话ExtJs 入门教程十二[下拉列表联动:Combobox_Two] extjs技术交流,欢迎加群(201926085) 不管是几级下拉列表的联动实现本质上都是根据某个下拉列表的变化,去动态加载其 ...

  3. Bootstrap入门(二十二)组件16:列表组

    Bootstrap入门(二十二)组件16:列表组 列表组是灵活又强大的组件,不仅能用于显示一组简单的元素,还能用于复杂的定制的内容. 1.默认样式列表组 2.加入徽章 3.链接 4.禁用的列表组 5. ...

  4. Bootstrap入门(十二)组件6:导航标签页

    Bootstrap入门(十二)组件6:导航标签页   1.标签页 2.胶囊式标签页 3.垂直展示 4.两端对齐的标签页 5.禁用的链接 6.添加下拉菜单   先引入本地的CSS文件和JS文件(注:1. ...

  5. MyBatis基础入门《十二》删除数据 - &commat;Param参数

    MyBatis基础入门<十二>删除数据 - @Param参数 描述: 删除数据,这里使用了@Param这个注解,其实在代码中,不使用这个注解也可以的.只是为了学习这个@Param注解,为此 ...

  6. UWP入门(十二)--数据绑定用法

    原文:UWP入门(十二)--数据绑定用法 主要几个元素: Template DataTemplate ItemSource 数据绑定是一个数据提取的方法,能使数据和UI上的控件紧密相连,下面的Demo ...

  7. RabbitMQ入门教程&lpar;十二&rpar;:消息确认Ack

    原文:RabbitMQ入门教程(十二):消息确认Ack 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csd ...

  8. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】

    <Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...

  9. FreeSql (二十二)Dto 映射查询

    适合喜欢使用 dto 的朋友,很多时候 entity 与 dto 属性名相同,属性数据又不完全一致. 有的人先查回所有字段数据,再使用 AutoMapper 映射. 我们的功能是先映射,再只查询映射好 ...

  10. Senparc&period;Weixin&period;MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget&lpar;dll&rpar; 后使用项目源代码调试

    最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...

随机推荐

  1. 通过手动创建统计信息优化sql查询性能案例

    本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息 来源于工作中的一个实际问题, 这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选 ...

  2. oracle 左边填充函数使用

    左边填充 select lpad('abcde',10,'0') from dual; ==>00000abcde select lpad('abcde',10,'x') from dual;= ...

  3. &lbrack;质疑&rsqb;编程之美求N&excl;的二进制最低位1的位置的问题

    引子:编程之美给出了求N!的二进制最低位1的位置的二种思路,但是呢?但是呢?不信你仔细听我道来. 1.编程之美一书给出的解决思路 问题的目标是N!的二进制表示中最低位1的位置.给定一个整数N,求N!二 ...

  4. Android基础知识05—活动的生命周期

    ------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...

  5. centos中redis安装

    一.wget http://download.redis.io/releases/redis-4.0.2.tar.gz 二.tar xzf redis-4.0.2.tar.gz cd redis-4. ...

  6. Linux sys&lowbar;call&lowbar;table变动检测

    catalogue . 引言 . 内核ko timer定时器,检测sys_call_table adress变动 . 通过/dev/kmem获取IDT adress . 比较原始的系统调用地址和当前内 ...

  7. js-随机图片

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8&quot ...

  8. 我的QT5学习之路(二)——第一个程序

    一.前言 “工欲善其事,必先利其器”,上一节,我介绍了Qt的安装和配置方法,搭建了基本的开发平台.这一节,来通过一个简单的例子来了解Qt的编程样式和规范,开始喽~~~ 二.第一个程序——Hello W ...

  9. Android UI设计的基本元素有哪些

    在android app开发如火如荼的今天,如何让自己的App受人欢迎.如何增加app的下载量和使用量....成为很多android应用开发前,必须讨论的问题.而ui设计则是提升客户视觉体验度.提升下 ...

  10. Qt应用如何发布

    原文请看:http://www.cnblogs.com/ungshow/archive/2010/10/10/1847082.html 通常情况下,使用Qt开发应用都是采用动态编译的方式来进行发布,发 ...