asp+access教案.docx
《asp+access教案.docx》由会员分享,可在线阅读,更多相关《asp+access教案.docx(18页珍藏版)》请在冰豆网上搜索。
asp+access教案
动态网页制作—asp+access
第一部分:
asp简单介绍,主讲其功能
第二部分:
ASP所用到的VB基本语法
第三部分:
渐入ASP+ACCESS
第四部分:
提高部分,主讲实例
2.1运行环境的准备:
ASP---ACTIVEserverpage动态服务器网页
由于ASP是动态网页,所以首先要建立一个支持动态网页运行的模拟服务器的环境。
在自己的单台计算机上安装Windows2000专业版或XP,保证有内置组件IIS—internetinformationserver(如果机器运行速度慢,亦可用Windows98+pws—personalwebserver方案),然后安装Access2000(或Access97)。
网页和数据库要存放在系统默认的安装磁盘:
/Inetpub/wwwroot文件夹下,以URL方式http:
//127.0.0.1/xxx来运行网页,这样就完成了准备工作。
(iis,pws目的的是把自己的单机电脑武装成一个服务器,此时才可以运行动态程序段的网页)
本机(bust)花生网站其它用户
2.2建立Access数据库
进入ACEESS软件,建立一个数据库文件(如book1.mdb),使用系统提供的表设计器或表向导建立一个数据库表(如address),设定表的字段(如name--姓名、no--编号、age--年龄等)各项属性,再录入几个记录,最后用Access工具设置一个数据库密码,这样就可以使用了。
如果是在网页运行过程中系统需要在已打开的数据库里自动生成新表,由可用SQL中的createtable命令来实现。
如:
createtableaddress(namechar(8),nochar(3)primarykey,ageint)也可建立与第一种方法相同的表address。
2.3打开数据库
2.3.1打开ActiveXDataObject(ADO)连接
在打开使用数据库之前应该先让系统打开ADO连接,这样才能打开指定路径下的数据库及使用库内的表。
打开ADO连接可以使用server.createobject方法,例如:
setad=server.createobject("adodb.connection")可在服务器端建立一个ADO连接对象ad,以后可以用AD实现数据库打开及其它操作。
2.3.2取出要打开的数据库的绝对路径
要打开数据库文件,就得通知系统数据库所在的位置,网站的网页文件在服务器上一般都是用相对路径这个概念,为保证系统能找到具体的某个数据库,应该使用server.mappath方法取出此数据库文件的绝对路径。
如:
Pathyy=Server.MapPath("book1.mdb")就可'取出数据库book1的绝对路径存放到pathyy变量中。
2..3.3打开数据库
有了上面两步准备工作后就可以使用Open方法打开指定的数据库了。
如:
ad.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&Pathyy就可打开绝对路径pathyy下的Access数据库book1.mdb,此后其内的表就可被程序调用。
3访问数据库
完成了数据库的打开,我们可以对数据内的表进行操作,下面就几种常用情况进行阐述。
在操作一个表的全部记录或表的部分记录(一般“部分记录”是执行了条件筛选命令产生的结果)时,由于在一个特定的时刻只能操作其中的某一个当前记录,我们可以用Server.CreateObject建立一个指针对象来指向将要操作的记录。
如:
Setrs=Server.CreateObject("ADODB.Recordset")就可建立一个代表某表中的所有记录的指针对象rs,利用rs对象可实现逐条访问表中的记录等操作。
特别掌握常用数据库表的操作,下面列出部记常用对象的一些方法:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录
这些方法可与VF数据库的命令进行对比学习。
实质是一样的,只是书写和概念上有些差异。
3.1向数据库表简单地输入和输出数据
把数据从表中读出来很简单,如像一般计算机语言中的赋值操作一样。
存放到数据库中的数据可以是程序运行中的变量,也可以是用request从上级网页表单中传来的变量等,下面以后者为例,把某用户从表单中传来的姓名(namep)、编号(no)、年龄(agep)存放到数据库中。
<%nam=Request.Form("namep")//取得从表单传来的数据namep,存放到新变量nam中
no=Request.Form("nop")//取得从表单传来的数据编号nop,存放到新变量no中
age=Request.Form("agep")//取得从表单传来的数据agep,存放到新变量age中
mysql="SELECT*FROMaddress"//设置了一个表示查询address表的变量mysql
rs.openmysql,ad,1,3//执行查询,且以可修改的方式打开临时表address.
Temp1=rs(“name)//可把当前记录的姓名name字段值读入到变量temp1中
rs.addnew//在表的最后增加一个新空记录
rs("name")=name//下面三句实现把要增加的数据写入临时表中的新记录中
rs("no")=no
rs("age")=age
rs.update//把临时表中的改变数据返回更新到原表 address中
%>
3.2记录的查询
查询是很复杂的一件事,要有一定的SQL基础,目前有多种方法可以实现,方法有难有易,但各有所长,这里举两种比较常见的典型情况予以说明。
3.2.1查找唯一值
如本文所用数据库表中的编号就是一个唯一值字段,也就是在表中此字段的值不会出现重复值,此时如果要找到某个特定的编号的记录就比较容易,可直接在select语句中完成。
如:
要在表中找到编号为”003”的记录,并把此记录的姓名,年龄取到变量中。
mysql="SELECT*FROMaddress"&"whereno="&""""&"003"&""""
rs.openmysql,ad,1,1//这儿是只读方式打开
xm=rs("name")
nl=rs("age")
由上可见,这种方法困难在查询语句的定义上,一般引号不好处理。
3.2.2查找多个满足条件的值
多个满足条件的值体现在要查询的关键字段的值有多个,一般要涉及到循环处理,这里介绍一种简单的循环处理办法while-wend语句。
如:
要在表中找出年龄在20岁以上的所有记录且以年龄降序处理。
mysql="SELECT*FROMaddress"&"ORDERBYnameDESC"//DESC可达到降序目的
rs.openmysql,ad,1,1
whilenotrs.eof
ifrs("age")>20then
……//这里是所需要的处理命令,根据实际情况而定
endif
rs.movenext//指针移动到下一个记录上
wend
查询执行时,由于在查询中指定为降序排列,所以在临时表里rs指向的第一个记录是年龄最大的记录。
程序中的循环主要是用于逐条处理记录,由rs.movenext方法控制指针向下移动,以达到临时文件的尾部eof作为循环的结束条件。
循环内部的if判断语句用来筛选出满足条件的记录,省略号之处根据具体情况可写出功能各异的强大程序。
3.3记录数据维护
数据库中的数据维护是经常性的工作,如删除过时的记录、非法记录,修改错误记录等。
维护记录一般是有目的地操作某个特定的记录,所以往往要事先找到要处理的记录,就可能用到前面所述的记录查询。
如:
要删除编号为"002"的记录且把编号为"004"记录的年龄增加1岁
mysql="SELECT*FROMaddress"
rs.openmysql,ad,1,3//数据维护,可能要改变原有数据,所以要以可读写方式进行
whilenotrs.eof
ifrs("no")>="002"thenrs.Delete
ifrs("no")>="004"thenrs("age")=rs("age")+1
rs.movenext
wend
rs.update//由于改动的表的内容,故要更新原表
4数据库的关闭
数据库在网络上是共享的,在使用完数据库后要及时关闭它,否则可能造成数据丢失和破坏。
具体的操作是在访问完数据后马上用close方法关闭所用过的查询和数据库。
如:
rs.close//关闭建立的rs指向的查询临时表
ad.close//关闭ad代表的系统与数据库的ADO连接
5结束语
ASP+Access不仅可以方便、高率地处理一般数据,也可处理图片、声音数据,由于篇幅有限,本文不予讨论。
一个实用的网站离不开动态网页,ASP+Access技术在目前的网站建设中应用很广泛且在不断地发展,新方法、新思路层出不穷,学习动态网页的过程是长期和艰难的,需要勇于动手实践,打破陈规,摸索出自己的一套方法。
应用举例
1动态地输出表格:
见例子—YY文件夹下的ASP1.HTM及其所有的链接文件。
本例可以自动地根据数据行的多少来输出表格,具有应用通用性
2数据库内的数据追加:
见例子---YY\lesson11下的samp10.HTM及其所有的链接文件.本例可实现把表单内的数据以记录形式追加到数据库中
3数据库内的数据维护:
见YY文件夹下的ASP2.HTM及其所有的链接文件。
此例子比较复杂。
应用了多项技术
4数据库内数据的删除:
见YY文件夹下的ASP2.HTM中的删除部分及其所有的链接文件。
5密码验证,密码维护:
见
ASP+ACCESS深入部分
在笼统地讲了一些概念和一些实例后,下面我们再次回头系统地学习一下ASP+ACCESS中的关键技术。
ASP与数据库应用(给初学者)
见最近许多网友询问一些关于数据库操作的基础问题,现把我以前写的一篇简单教程贴上来,好让一些初学者最快的入门:
ASP与数据库应用(给初学者)
一般来说,一个真正的、完整的站点是离不开数据库的,因为实际应用中,需要保存的数据很多,而且这些数据之间往往还有关联,利用数据库来管理这些数据,可以很方便的查询和更新。
数据库有很多种,如:
Fox数据库(.dbf)、Access数据库(.mdb)、Informix、Oracle和SQLServer等等,在这里,我将以MicrosoftAccess数据库为例来说明ASP是如何访问数据库的。
常用数据库语句
1.SELECT语句:
命令数据库引擎从数据库里返回信息,作为一组记录。
2.INSERTINTO语句:
添加一个或多个记录至一个表。
3.UPDATE语句:
创建更新查询来改变基于特定准则的指定表中的字段值。
4.DELETE语句:
创建一个删除查询把记录从FROM子句列出并符合WHERE子句的一个或更多的表中清除。
5.EXECUTE语句:
用于激活PROCEDURE(过程)
用ASP来做一个自己的通讯录练练手吧……
一、建立数据库:
用MicrosoftAccess建立一个名为data.mdb的空数据库,使用设计器创建一个新表。
输入以下几个字段:
字段名称 数据类型 说明 其它
ID 自动编号 数据标识 字段大小:
长整型 新值:
递增 索引:
有(无重复)
username 文本 姓名 缺省值
usermail 文本 E-mail 缺省值
view 数字 查看次数 字段大小:
长整型 默认值:
0 索引:
无
indate 时间日期 加入时间 缺省值
保存为data.mdb文件,为了便于说明,只是做了一个比较简单的库。
二、连接数据库
方法1:
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&Server.MapPath("data.mdb")
方法2:
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("data.mdb")
注意:
一个页面中,只要连接一次就可以了,数据库使用完后要及时关闭连接。
conn.Close
Setconn=Nothing
三、添加新记录到数据库
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&Server.MapPath("data.mdb")
username="风云突变"
usermail="fytb@"
indate=Now()
sql="insertintodata(username,usermail,indata)values('"&username&"','"&usermail&"','"&indate&"')"
conn.Execute(sql)
conn.Close
Setconn=Nothing
说明:
建立数据库连接;通过表单获取姓名、E-mail字符串,Now()获取当前时间日期;使用insertinto语句添加新记录;conn.Execute来执行;最后关闭。
四、选择数据库里的记录
1.选择所有记录的字段(按记录倒序排序):
sql="select*fromdataorderbyIDdesc"
2.选择所有记录的姓名和E-mail字段(不排序):
sql="selectusername,usermailfromdata"
3.选择姓名为“风云突变”的所有记录:
sql="select*fromdatawhereusername='"风云突变"'"
4.选择使用163信箱的所有记录(按查看次数排序):
sql="select*fromdatawhereusermaillike'%"@"%'orderbyviewdesc"
5.选择最新的10个记录:
sql="selecttop10*fromdataorderbyIDdesc"
SQL语句已经知道了,不过在Web应用时,还得创建一个RecordSet对象得到记录集,才能把从数据库里取出的值应用在网页上,如果现在将所有的记录显示在网页上就这样:
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&Server.MapPath("data.mdb")
sql="select*fromdata"
Setrs=Server.CreateObject("ADODB.RecordSet")
rs.Opensql,conn,1,1
DoWhileNotrs.Eof
Response.Write"
姓名:
"&rs("username")&" E-mail:
"&rs("usermail")&" 查看:
"&rs("view")&"次 "&rs("indate")&"加入
"
rs.MoveNext
Loop
rs.Close
Setrs=Nothing
conn.Close
Setconn=Nothing
说明:
建立数据库连接;创建rs得到记录集;循环显示记录,rs.Eof表示记录末,rs.MoveNext表示移到下一个记录;最后关闭。
五、修改(更新)数据库记录
修改记录的E-mail:
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&Server.MapPath("data.mdb")
ID=1
usermail="fytb@"
sql="updatedatasetusermail='"&usermail&"'whereID="&CInt(ID)
conn.Execute(sql)
conn.Close
Setconn=Nothing
说明:
建立数据库连接;获取记录ID、新E-mail字符串;使用update语句修改记录;conn.Execute来执行;最后关闭。
如果使记录的查看值加1,则:
sql="updatedatasetview=view+1whereID="&CInt(ID)
六、删除数据库记录
删除某一条记录:
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&Server.MapPath("data.mdb")
ID=1
sql="deletefromdatawhereID="&CInt(ID)
conn.Execute(sql)
conn.Close
Setconn=Nothing
说明:
建立数据库连接;获取记录ID;使用delete语句删除记录;conn.Execute来执行;最后关闭。
删除多条记录为:
sql="deletefromdatawhereIDin(ID1,ID2,ID3)"
删除所有记录为:
sql="deletefromdata"
总结:
以上教程是针对ASP的初学者而写的,只是介绍了一些基本的用法,在了解之后可以自己去试试,重要的在于能举一反三、综合运用。
更多的语法和参数请参阅MicrosoftAccess帮助中的MicrosoftJetSQL参考,由于本人才疏学浅、能力有限,如有表达不明确有地方还望指出,如果在应用当中遇到什么问题,也希望能够提出。
谢谢。
VBScript函数补习课
最近在看CSDN论坛的时候发现很多人还在问一些基本的ASP问题,而且有很大一部分是围绕着一些常用的VBSCRIPT函数。
在这里我想有必要点一下常用的几个函数。
我们不需要背出函数定义,但是我们需要知道这个函数,在必要的时候想到去用。
1、我怎么在一个日期上加上一个日期?
DateAdd(interval,number,date)
参数
interval必选项。
字符串表达式,表示要添加的时间间隔。
number必选项。
数值表达式,表示要添加的时间间隔的个数。
数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。
date必选项。
Variant或要添加interval的表示日期的文字。
interval参数可以有以下值:
yyyy 年
q 季度
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 小时
n 分钟
s 秒
例子:
Date=DateAdd("m",1,"31-01-2004")得出的结果是2004年2月31日?
呵呵,不是,是2004年2月29日,DateAdd()不会返回错误的日期
2、我怎么得到两个日期的时间间隔?
DateDiff(interval,date1,date2)
参数
interval必选项。
字符串表达式表示用于计算date1和date2之间的时间间隔。
date1,date2必选项。
日期表达式。
用于计算的两个日期。
interval参数可以有以下值:
设置描述
yyyy 年
q 季度
n 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 小时
m 分钟
s 秒
例子:
DiffDate=DateDiff("d",Now,"31-01-2004")
3、我怎么精确我的计算结果?
FormatNumber(expression[,NumDigitsAfterDecimal[,IncludeLeadingDigit[,UseParensForNegativeNumbers[,GroupDigits]]]])
参数
Expression必选项。
要被格式化的表达式。
NumDigitsAfterDecimal可选项。
指示小数点右侧显示位数的数值。
默认值为-1,指示使用的是计算机的区域设置。
IncludeLeadingDigit可选项。
三态常数,指示是否显示小数值小数点前面的零。
UseParensForNegativeNumbers可选项。
三态常数,指示是否将负值置于括号中。
GroupDigits可选项。
三态常数,指示是否使用计算机区域设置中指定的数字分