电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 数据库
ASP讲座之六:ASP与数据库(一)-ASP教程,数据库相关
作者:网友供稿 点击:33
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

在前面几讲中,我们已经学习了asp的基本内容,灵活使用这些知识,你已经可以使用asp建立一个web站点了。但一般来说,一个真正的、完整的站点是离不开数据库的,因为少量的数据,如网页访问人数等完全可以存储在文本文件中,但实际应用中,需要保存的数据远不止这一点点,而且这些数据之间往往还有关联,利用数据库来管理这些数据,可以很方便的查询和更新。数据库有很多种,如:fox数据库(.dbf)、access数据库(.mdb)、informix、oracle和sql server等等,在本讲座中,我将以microsoft access数据库和sql server 7.0为例来说明asp是如何访问数据库的。为什么选择asp呢?统计数据表明,sql server 7.0是当前最快、性价比最高的数据库,而www.8848.net、www.dell.com、www.hotbot.com等许多大型的网站都是使用asp技术创建的,所以asp是比较容易掌握而且很实用的技术,你应该满怀信心和勇气地试着接近它、了解它,进而使用它。
在进一步学习之前,要做哪些准备:
1. 如果你没有接触过数据库,建议先安装office中的microsoft access,了解一下数据库的基本知识。
2. 最好安装microsoft sql server 7.0。一旦安装好,立马就可使用,不需要什么设置,注意在windows9.x中应安装desktop版本,而7.0以前的版本只能安装在nt server中。
3. 接下来所讨论的内容,需要一个叫做mdac(microsoft data access components)的组件,这个组件已经包含在asp中,如果你想了解更多的相关内容,或者下载最新的版本,可以访问http://www.microsoft.com/data。

一、 与数据库建立连接
在正式开始之前,先介绍一下ado——activex data objects,刚接触这个概念,你只要把ado看作asp与数据库之间的桥梁就可以了。
(一) 与microsoft access数据库建立连接
方法一:例wuf40.asp
<% @language = vbscript %>
<% wuf40.asp
option explicit
dim cnn, strcnn
1 - 创建 connection 对象
set cnn = server.createobject("adodb.connection")
strcnn = "driver={microsoft access driver (*.mdb)}; dbq=" & server.mappath("\asp") & "\northwind.mdb;"
‘ 2 - 使用 connection 对象的 open 方法打开数据库
cnn.open strcnn

response.write server.mappath("\asp") & "\northwind.mdb;"  & "<br>"
response.write "数据库连接成功: " & cnn.state & "<br>"
3 - 使用 connection 对象的 close 方法关闭连接
cnn.close
response.write "数据库已经关闭: " & cnn.state
4 - 将connection 对象从内存中删除,以释放资源
set cnn = nothing
%>
    northwind.mdb是microsoft access97自带的一个示例数据库,一般位于目录“microsoft office\office\samples”下,你可以自己找一下,然后将这个文件拷至web服务器相应目录下(本例中放在c:\inetpub\home\asp下)。
    在这里,server对象的mappath方法将指定的虚拟路径转换为真实的文件路径,最终结果类似:c:\inetpub\home\asp\northwind.mdb。
方法二:用ole db创建microsoft access连接,下面列出关键部分。
set cnn = server.createobject("adodb.connection")
strcnn = "provider = microsoft.jet.oledb.4.0; data source = c:\inetpub\home\asp\northwind.mdb"
cnn.open strcnn

(二) 与sql server数据库建立连接
方法一:用ole db连接sql server,详见例程wuf41.asp。
set cnn = server.createobject("adodb.connection")
strcnn = "provider=sqloledb; user id=sa; password=; initial catalog=pubs; data source=icbczjp"
cnn.open strcnn
initial catalog后指定数据库名,data source后为机器名(即网络→属性→标识中的计算机名)或ip地址(需要安装dns服务)。
方法二:
set cnn = server.createobject("adodb.connection")
strcnn = "driver={sql server};server=icbczjp;uid=sa;pwd=;database=pubs"
cnn.open strcnn

除了上述的两种方法之外,当然还可使用许多文章、资料中介绍的最经典的方法:使用odbc生成连接。就是先在web服务器控制面板的“odbc data sources”中建立一个连接,然后在asp中使用类似“strcnn ="dsn=adocnn; uid = sa;pwd=;database=pubs"”的连接字符串。这里不详细介绍,一来这不是最好的方法,二来其他资料都介绍了该方法。
另外,有兴趣可下载例程wuf42.asp看看如何使用connection对象的connectiontimeout和connectionstring属性。

二、 数据库从这里起步——检索数据库中已存在的数据
现在假定你已有最基本的数据库知识,知道如何使用microsoft access打开northwind.mdb中的“运货商”表,看到表中储存的几条数据。现在问题是如何使用asp在浏览器中显示这些数据,下面介绍三种方法。
特别提醒:如果你的数据库底子较薄,只要会使用第二种方法就行了,切不可贪多,以免走火入魔,切记!切记!

方法一:只使用 connection 对象。例wuf43.asp
<% @language = vbscript %>
<% wuf43.asp
option explicit
这一句是非常重要的, 它可以确保所看到的数据不是缓存在客户端的数据,
而是服务器端随时更新过的最新数据
response.expires = 0

第一部分: 建立连接

dim cnn, strcnn
set cnn = server.createobject("adodb.connection")
strcnn = "provider = microsoft.jet.oledb.4.0; data source = c:\inetpub\home\asp\northwind.mdb"
cnn.open strcnn

第二部分: 使用 connection 对象的 execute 方法得到记录集

dim strsql, rstest
下面是一句sql语句(结构化查询语句), 本讲座不具体介绍
‘建议找本书看看,基本使用还是比较简单的,一学就会
这一句的意思是从 运货商 表中选出所有的数据
strsql = "select * from 运货商"
set rstest = cnn.execute(strsql)
%>
<html>
<body>
<% 第三部分: 将得到的记录集显示到浏览器

循环至记录末尾 - 一行一行、一条记录一条记录的显示
do while not rstest.eof    

下面这两行的作用是一样的, 即 rstest("运货商id") 等同于 rstest(0)
response.write rstest("运货商id") & "  "  & rstest("公司名称") & "  "  & rstest("电话") & "  "  & "<br>"
response.write rstest(0) & "  "  & rstest(1) & "  "  & rstest(2) & "  "  & "<br>"

移到下一条记录 - 这一句可千万不能少 否则就陷入死循环
    rstest.movenext       
loop

第四部分: 打扫战场
cnn.close
set rstest = nothing: set cnn = nothing
%>
</body>
</html>
这个例子是很简单的,第三部分显示数据是数据库典型的输出样式,你可以参照以前所学的知识加上表格和颜色美化输出结果。
    非初级用户可以参考wuf44.asp看看execute方法的完整使用。

方法二:通过创建 recordset 对象——切记初学者只求掌握这种方法便够了。
例:wuf45.asp,其他部分同wuf43.asp,关键在于程序的第二部分。
第二部分: 通过创建 recordset 对象得到记录集
dim strsql, rstest
创建 recordset 对象
set rstest = server.createobject("adodb.recordset")

strsql = "select 运货商id,电话,公司名称 from 运货商 where 电话 = (503) 555-9931"
将 recordset 对象附加到连接 cnn
set rstest.activeconnection = cnn
使用 recordset 对象的 open 方法打开记录集
rstest.open strsql
    现在让我们看看recordset对象open方法的完整用法,例wuf48.asp。
<% @language = vbscript %>
<% wuf48.asp
option explicit
response.expires = 0
%>
<!--#include file="adovbs.inc"-->
<%
第一部分: 建立连接
dim cnn, strcnn
set cnn = server.createobject("adodb.connection")
strcnn = "provider = microsoft.jet.oledb.4.0; data source = c:\inetpub\home\asp\northwind.mdb"
cnn.open strcnn

第二部分: 通过创建 recordset 对象得到记录集
dim rstest
set rstest = server.createobject("adodb.recordset")

rstest.open "运货商",cnn,adopenforwardonly,adlockreadonly,adcmdtable
%>
<html>
<body>
<% 第三部分: 将得到的记录集显示到浏览器
do while not rstest.eof    
response.write rstest(0) & "  "  & rstest(1) & "  "  & rstest(2) & "  "  & "<br>"
    rstest.movenext       
loop

第四部分: 打扫战场
rstest.close: cnn.close
set rstest = nothing: set cnn = nothing
%>
</body>
</html>
分析:
1.首先看看关键句:
rstest.open "运货商",cnn,adopenforwardonly,adlockreadonly,adcmdtable
第一个参数可以是表名(如:运货商),也可以是sql语句(如wuf45.asp)。
第二个参数指定当前的连接。
第三个参数指示cursortype,确定提供者打开 recordset 时应该使用的游标类型。这里采用仅向前移动的游标。
第四个参数指示locktype,确定提供者打开 recordset 时应该使用的锁定(并发)类型。这里指定为只读。
第五个参数与第一个参数相关,如本例中第一个参数为表名,则第五个参数使用adcmdtable,若第一个参数为sql语句,则第该参数为adcmdtext,如:
rstest.open "select * from 运货商",cnn,adopenforwardonly,adlockreadonly,adcmdtext
    我想不见得大部人都能真正搞懂这五个参数的意思,没关系,刚开始只要照搬会用就行,以后我们会不断接触,熟了便能生巧。
    关于cursortype和locktype这两个参数,将在下讲详细阐述,仅仅检索数据只需按本例设置就可以了。
2.这五个参数,也可以利用recordset对象的属性来设置,如例wuf46.asp。
第二部分: 通过创建 recordset 对象得到记录集
dim rstest
set rstest = server.createobject("adodb.recordset")
rstest.activeconnection = cnn
rstest.cursortype = adopenforwardonly
rstest.locktype = adlockreadonly
rstest.open "运货商", , , ,adcmdtable
3. 再看看这句:<!--#include file="adovbs.inc"-->。
(1) 因为使用了adopenforwardonly,adlockreadonly,adcmdtext这样的常数,所以需要将adovbs.inc这个文件包含进来。
(2) adovbs.inc这个文件一般位于目录program files\common files\system\ado下,你可将它拷至web服务器当前目录(本讲下载包中也有该文件)。
(3) 用记事本打开这个文件看一下,就明白为什么需要这个文件了。

方法三:通过引入 command 对象——这个应该在你有能力的前提下研究。
<% @language = vbscript %>
<% wuf47.asp
option explicit
response.expires = 0
%>
<!--#include file="adovbs.inc"-->
<%
第一部分: 建立连接
dim cnn, strcnn
set cnn = server.createobject("adodb.connection")
strcnn = "provider = microsoft.jet.oledb.4.0; data source = c:\inetpub\home\asp\northwind.mdb"
cnn.open strcnn

第二部分: 通过创建 command 对象得到记录集
dim strsql, rstest, cmdtest
创建 command 对象
set cmdtest = server.createobject("adodb.command")

strsql = "select max(数量) from 订单明细"
cmdtest.commandtext = strsql
cmdtest.commandtype = adcmdtext   表明命令类型为 sql 语句
set cmdtest.activeconnection = cnn
使用 command 对象的 execute 方法得到记录集。
set rstest = cmdtest.execute
%>
<html>
<body>
<% 第三部分: 将得到的记录集显示到浏览器

do while not rstest.eof    
response.write rstest(0)  & "<br>"
    rstest.movenext       
loop

第四部分: 打扫战场

rstest.close: cnn.close
set rstest = nothing: set cmdtest=nothing: set cnn = nothing
%>
</body>
</html>
    关于command 对象的使用以后还会在数据库的深入编程中重点讲解。

本讲主要介绍了如何与数据库连接并检索数据库数据,初学者难免会有点糊涂,切记,你只需要学会以下知识点即可:
1. 如何使用ole db与microsoft access数据库建立连接;
2. 如何使用ole db与microsoft sql server数据库建立连接;
3. 如何通过创建recordset对象检索数据库中的数据。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·数据库开发个人总结(ADO.NET小结)-.NET教程,数据库应用
·怎么由DataSet将数据导入Excel?-.NET教程,数据库应用
·动态创建SQL Server数据库、表、存储过程-ASP教程,数据库相关
·Win32环境下动态链接库(DLL)编程原理-.NET教程,数据库应用
·封装的ADO.NET对数据库操作经典类-.NET教程,数据库应用
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·DataGrid使用心得(附大量代码)-ASP教程,数据库相关
·用代码创建DataGrid的多链接及checkbox事件响应-.NET教程,数据库应用
·ADO.NET 的最佳实践技巧-.NET教程,数据库应用
·转载: 用纯ASP代码实现图片上传并存入数据库中

最新文章
·根据数据表中数据,生成Powerpoint幻灯片-ASP教程,数据库相关
·DataGrid中的按钮反选事件与NamingContainer(命名容器)-downmoon-ASP教程,数据库相关
·使用用VB处理MYSQL数据库中二进制数据问题-.NET教程,VB.Net语言
·关于DataGridView中如何接收处于编辑状态下的当前信息-ASP教程,数据库相关
·在DataGridView中获得DataGridViewCheckBoxColumn的状态-ASP教程,数据库相关
·.net下访问Access数据库需要注意的问题-.NET教程,Asp.Net开发
·ActiveMQ4.1+Spring2.0的POJO JMS方案(上)-.NET教程,数据库应用
·ASP.NET 2.0中直接将Access数据库导入到Excel文件中-.NET教程,Asp.Net开发
·NET(C#)连接各类数据库-集锦-.NET教程,C#语言
·ASP.NET2.0连接SQL Server数据库详解-.NET教程,Asp.Net开发


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号