用ASP连接读写ACCESS数据库实例

更新时间:2024-01-08 12:38:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

(一) 数据库的选择:

有许多的数据库你可以选择,SQL SERVER、ACCESS(*.mdb)、EXCEL(*.xls)、FOXPRO(*.dbf)甚至普通的文本文件(*.txt)都可以达到存储数据的功能。那么到底选择什么数据库最合适呢?其中SQL SERVER是服务器级的,足以应付每天上万次的访问量。对于非服务器级的数据库建议使用ACCESS97。 因为:

(1)只要安装了PWS或IIS4肯定有ACCESS的ODBC驱动,即你的系统肯定支持ACCESS数据库的存取。

(2)ACCESS支持的SQL指令非常齐全。

(3)ACCESS ODBC驱动程序的效率非常高。虽然它不是服务器级的数据库,但是作为中小型企业内部网的数据库支持还是绰绰有余的。

(4)ACCESS97在OFFICE97中就有,非常方便得到和使用。

本文就以ACCESS数据库为准介绍基于WEB的数据库存取方法。

(二)例子:我们建立一个“客户”数据库,需要保存如下的客户资料:客户名称、联络人姓名、所在城市、电话号码。

(1)首先建立ACCESS数据库customer.mdb(今后有用的)。

建立如下字段:客户名称、联络人姓名、所在城市、电话号码、客户编号、时间。将表保存为\客户\今后有用的,===>看看图)。注意:建立字段时多作了2个(客户编号、时间),因为在今后排序时要用到它们。建议今后做数据库时最好都加上这2项,不会没用的。此外,在保存表时ACCESS会询问是否建立一个住关键字,我们不需要它所以不必建立。还有:时间字段的\默认值\设成\,即去系统当时的时间。同时将索引项设成\有(允许重复)\,含义:WEB上极有可能同时存取数据,所以允许重复,索引设成\有\可以加快排序速度。===>看看图

(2)建立递交表单add.htm:

源代码如下:

添加数据库记录

这与普通的HTML没有任何区别,关键部分已经用红色标记了。递交方法用POST,递交后处理的程序是adddatabase.asp(下一步就重点讨论它)。

(3)关键部分:建立与数据库的联系并将表单中收集到的信息添加到ACCESS数据库中。

ASP代码放在〈%和%>之间。

adddatabase.asp程序内容: <%

CompanyName = Request(\CName = Request(\City = Request(\Tel = Request(\%>

以上,首先取得表单中填写的数据,使用ASP的Request对象非常容易可以实现数据的收集。双引号中的就是上个文件中建立的各个输入框中的名字红色部分(NAME=)。所以今后为每个输入框起名字是个好习惯,尽管有时候并不一定用得到。这样取得的数据就保存在等号坐侧的变量中了。

If CompanyName = \Response.Write \请将资料填写完整。\'Response.Redirect \Response.End End If

这里是检测各个项目是否输入了东西,如果为空则不往下继续执行,显示错误信息。注意:你可以使用两种方法。我都列出了。

方法一:使用Response.Write方法写一个出错页面,类似于java scripts的document.write写法,只是ASP使用Response.write罢了。

方法二:使用Response.Redirect方法导向出错页面error.htm。我在方法一的代码前加上单引号表示注释。('ASP中表示注释用单引号')。 <%

set dbconnection=Server.CREATEOBJECT(\DBPath = Server.MapPath(\

dbconnection.Open \%>

程序解释:

(1)建立Connection对象:dbconnection,建立一个连接(Connection)是数据库存取的开始。我们使用ASP的内建对象方法Server.Createobject建立与数据库的连接。ADODB是ASP的数据库存取组件,不必担心只要有ASP就有它了,是内置的。

(2)使用dbconnection.open方法打开数据库customer.mdb。driver参数语法: driver={Microsoft Access Driver (*.mdb)}必须这么写。告诉系统使用ACCESS ODBC驱动处理。dbq参数用来指定打开的数据库文

件,它必须是完整的路径。例如\,我们使用Server.MapPath的方法取得数据库的完整路径。 <%

Set rs = Server.CreateObject(\%>

建立Recordset对象rs。Connection仅仅是建立了与数据库间的连接,要存取数据还应该再建立Recordset对象。

rs.Open \客户\

打开数据库中的表\客户\(客户是表名)。 语法:

rs.open 数据表名或SQL指令,已经建立的Connection对象(这里是dbconnection), 锁定类型 <% rs.AddNew

rs(\公司名称\rs(\联络人姓名\rs(\所在城市\rs(\电话号码\rs.Update %>

用AddNew向数据库请求添加数据。最后用Update写入。注意:等号右侧的变量保存着用Request取得的表单数据。双引号内的就是数据库的字段,应该与数据库的一致啊。否则会出错的。这样变量内的数据就写入了数据库对应的字段内了。

Response.Write \祝贺,您的数据已经添加进数据库了!

\Response.Write \查看数据\Response.Write \

'写入成功后显示祝贺信息并建立查看数据库记录的连接。 %>

(4)显示/查看数据库记录: <%

set dbconnection=Server.CREATEOBJECT(\DBPath = Server.MapPath(\

dbconnection.Open \

'建立与数据库的连接,与上同。

SQL=\客户 Order By 时间 DESC\SET CustomerList=dbconnection.EXECUTE(SQL) %>

建立SQL查询语句,表示从\客户\表中查询所有记录,Order By 时间 DESC表示\按时间降序排序,\这样最后添加的信息再最上面显示。下面一句执行SQL查询并将结果返回给Recordset对象CustomerList。

编号 公司名称 联络人姓名 所在城市 电话号码

<% DO WHILE NOT CustomerList.EOF %>

'检测记录是否到了最后一条。EOF表示End of File。

<% =CustomerList(\客户编号\<% =CustomerList(\公司名称\<% =CustomerList(\联络人姓名\<% =CustomerList(\所在城市\<% =CustomerList(\电话号码\

<% =CustomerList(\客户编号\可以说是Response.Write方法的简写。将\客户编号\字段内的数据写入TD标签间。 <%

CustomerList.movenext loop

%>

如果还没有到最后一条则指针移动到下一条。用Do While ... Loop循环逐一取得所有的记录。

RS.OPEN SQL,CONN,A,B A:

ADOPENFORWARDONLY(=0) 只读,且当前数据记录只能向下移动

ADOPENKEYSET(=1)

只读,当前数据记录可自由移动

ADOPENDYNAMIC(=2)

可读写,当前数据记录可自由移动

ADOPENSTATIC(=3)

可读写,当前数据记录可自由移动,可看到新增记录 B:

ADLOCKREADONLY(=1)

缺省锁定类型,记录集是只读的,不能修改记录

ADLOCKPESSIMISTIC(=2)

悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。

ADLOCKOPTIMISTIC(=3)

乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。

ADLOCKBATCHOPTIMISTIC(=4)

批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。

当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。 对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间, 数据在这段时间被更新。这减少了资源的使用。

===========================================================

数据库连接: <%

set conn=server.createobject(\

conn.open \数据库名\%>

打开数据库:

exec=\数据库表\

set rs=server.createobject(\rs.open exec,conn,1,1 参数1,1为读取

读取内容格式:<%=rs(\字段\

添加记录处理程序: <%

set conn=server.createobject(\

conn.open \数据库名\name=request.form(\字段\ name,tel,message为提交表单所设置的字段值 tel=request.form(\字段\

message=request.form(\字段\

exec=\表名(字段)values('\字段+\多个用逗号隔开 conn.execute exec 使用execute提交 conn.close

set conn=nothing %>

搜索处理程序: <%

name=request.form(\字段\为提交表单所设置的字段值 tel=request.form(\字段\

set conn=server.createobject(\

conn.open \数据库名\exec=\表 where name='\字段+\字段 set rs=server.createobject(\rs.open exec,conn,1,1

%>

'页面搜索到的内容导出来 <%

do while not rs.eof %>

<%=rs(\<%=rs(\<%=rs(\ <%

rs.movenext loop %>

删除记录处理程序: <%

set conn=server.createobject(\

conn.open \数据库名\exec=\表名 where 编号=\conn.execute exec %>

修改记录处理程序: <%

set conn=server.createobject(\

conn.open \数据库名\exec=\表名 where 编号=\set rs=server.createobject(\rs.open exec,conn,1,3 '1,3为修改意思

rs(\字段\ 'name,tel,message为提交表单所设置的字段值 rs(\字段\

rs(\字段\rs.update rs.close

set rs=nothing conn.close

set conn=nothing %>

修改记录执行程序:输入ID号页面>>>导出相对应ID数据>>>>>>直接修改的处理程序

后台登陆处理程序例子: <%

dim name,password

name=request.form(\

password=request.form(\dim exec,conn,rs

exec=\表名 where(name='\字段&\字段&\set conn=server.createobject(\

conn.open \数据库名\set rs=server.createobject(\rs.open exec,conn if not rs.eof then rs.Close conn.Close

session(\session(\

response.Redirect \else

session(\session(\response.Redirect \end if %>

每个后台页面加上:

<%if not session(\里面定义一个checked字符串变量 response.Redirect \ else %>

本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:http://www.hackbase.com/tech/2009-11-11/57879.html

本文来源:https://www.bwwdw.com/article/zpux.html

Top