asp+access教案

上传人:zhan****gclb 文档编号:109953146 上传时间:2022-06-17 格式:DOC 页数:27 大小:80.50KB
收藏 版权申诉 举报 下载
asp+access教案_第1页
第1页 / 共27页
asp+access教案_第2页
第2页 / 共27页
asp+access教案_第3页
第3页 / 共27页
资源描述:

《asp+access教案》由会员分享,可在线阅读,更多相关《asp+access教案(27页珍藏版)》请在装配图网上搜索。

1、动态网页制作asp+access 第一部分:asp简单介绍,主讲其功能第二部分:ASP所用到的VB基本语法第三部分:渐入ASP+ACCESS第四部分:提高部分,主讲实例2.1 运行环境的准备: ASP-ACTIVE server page动态服务器网页由于ASP是动态网页,所以首先要建立一个支持动态网页运行的模拟服务器的环境。在自己的单台计算机上安装Windows2000专业版或XP,保证有内置组件IISinternet information server(如果机器运行速度慢,亦可用Windows98+pwspersonal web server方案),然后安装Access2000(或Acc

2、ess97)。网页和数据库要存放在系统默认的安装磁盘:/Inetpub/wwwroot文件夹下,以URL方式http: / 127.0.0.1/xxx 来运行网页,这样就完成了准备工作。(iis ,pws目的的是把自己的单机电脑武装成一个服务器,此时才可以运行动态程序段的网页) 本机(bust) 花生网站 其它用户2.2 建立Access数据库进入ACEESS软件,建立一个数据库文件(如book1 .mdb),使用系统提供的表设计器或表向导建立一个数据库表(如address),设定表的字段(如name-姓名、no-编号、age-年龄等)各项属性,再录入几个记录,最后用Access工具设置一个数

3、据库密码,这样就可以使用了。如果是在网页运行过程中系统需要在已打开的数据库里自动生成新表,由可用SQL中的create table 命令来实现。如: create table address (name char(8), no char(3) primary key , age int ) 也可建立与第一种方法相同的表address 。2.3 打开数据库2.3.1 打开ActiveX Data Object(ADO)连接在打开使用数据库之前应该先让系统打开ADO连接,这样才能打开指定路径下的数据库及使用库内的表。打开ADO连接可以使用server . createobject方法,例如:set

4、 ad=server . createobject(adodb.connection) 可在服务器端建立一个ADO连接对象ad,以后可以用AD实现数据库打开及其它操作。2.3.2 取出要打开的数据库的绝对路径要打开数据库文件,就得通知系统数据库所在的位置,网站的网页文件在服务器上一般都是用相对路径这个概念,为保证系统能找到具体的某个数据库,应该使用server .mappath方法取出此数据库文件的绝对路径。如:Pathyy = Server.MapPath(book1.mdb) 就可取出数据库book1的绝对路径存放到pathyy变量中。2.3.3 打开数据库有了上面两步准备工作后就可以使用

5、Open方法打开指定的数据库了。 如:ad . Open driver=Microsoft Access Driver (*.mdb);dbq= & Pathyy 就可打开绝对路径pathyy下的Access数据库book1.mdb,此后其内的表就可被程序调用。3 访问数据库 完成了数据库的打开,我们可以对数据内的表进行操作,下面就几种常用情况进行阐述。在操作一个表的全部记录或表的部分记录(一般“部分记录”是执行了条件筛选命令产生的结果)时,由于在一个特定的时刻只能操作其中的某一个当前记录,我们可以用Server.CreateObject建立一个指针对象来指向将要操作的记录。如: Set rs

6、 = Server .CreateObject(ADODB.Recordset) 就可建立一个代表某表中的所有记录的指针对象rs,利用rs对象可实现逐条访问表中的记录等操作。特别掌握常用数据库表的操作,下面列出部记常用对象的一些方法:rs.movenext将记录指针从当前的位置向下移一行rs.moveprevious将记录指针从当前的位置向上移一行rs.movefirst将记录指针移到数据表第一行rs.movelast将记录指针移到数据表最后一行rs.absoluteposition=N将记录指针移到数据表第N行rs.absolutepage=N将记录指针移到第N页的第一行rs.pagesiz

7、e=N设置每页为N条记录rs.pagecount根据pagesize的设置返回总页数rs.recordcount返回记录总数rs.bof返回记录指针是否超出数据表首端,true表示是,false为否rs.eof返回记录指针是否超出数据表末端,true表示是,false为否rs.delete删除当前记录,但记录指针不会向下移动rs.addnew添加记录到数据表末端rs.update更新数据表记录这些方法可与VF数据库的命令进行对比学习。实质是一样的,只是书写和概念上有些差异。3.1 向数据库表简单地输入和输出数据把数据从表中读出来很简单,如像一般计算机语言中的赋值操作一样。存放到数据库中的数据可

8、以是程序运行中的变量,也可以是用request从上级网页表单中传来的变量等,下面以后者为例,把某用户从表单中传来的姓名(namep)、编号(no)、年龄(agep)存放到数据库中。 3.2 记录的查询 查询是很复杂的一件事,要有一定的SQL基础,目前有多种方法可以实现,方法有难有易,但各有所长,这里举两种比较常见的典型情况予以说明。3.2.1 查找唯一值如本文所用数据库表中的编号就是一个唯一值字段,也就是在表中此字段的值不会出现重复值,此时如果要找到某个特定的编号的记录就比较容易,可直接在select语句中完成。如:要在表中找到编号为”003”的记录,并把此记录的姓名,年龄取到变量中。mysq

9、l = SELECT * FROM address & where no = &003 & rs .open mysql, ad, 1, 1 / 这儿是只读方式打开xm=rs(name )nl=rs( age )由上可见,这种方法困难在查询语句的定义上,一般引号不好处理。3.2.2 查找多个满足条件的值多个满足条件的值体现在要查询的关键字段的值有多个,一般要涉及到循环处理,这里介绍一种简单的循环处理办法while-wend 语句。如:要在表中找出年龄在20岁以上的所有记录且以年龄降序处理。mysql = SELECT * FROM address & ORDER BY name DESC /

10、DESC可达到降序目的rs .open mysql, ad, 1, 1 while not rs .eofif rs(age) 20 then / 这里是所需要的处理命令,根据实际情况而定end ifrs.movenext /指针移动到下一个记录上wend查询执行时,由于在查询中指定为降序排列,所以在临时表里rs指向的第一个记录是年龄最大的记录。程序中的循环主要是用于逐条处理记录,由rs . movenext方法控制指针向下移动,以达到临时文件的尾部eof作为循环的结束条件。循环内部的if 判断语句用来筛选出满足条件的记录,省略号之处根据具体情况可写出功能各异的强大程序。3 .3 记录数据维护

11、数据库中的数据维护是经常性的工作,如删除过时的记录、非法记录,修改错误记录等。维护记录一般是有目的地操作某个特定的记录,所以往往要事先找到要处理的记录,就可能用到前面所述的记录查询。如:要删除编号为002的记录且把编号为004记录的年龄增加1岁mysql = SELECT * FROM address rs .open mysql, ad, 1, 3 /数据维护,可能要改变原有数据,所以要以可读写方式进行while not rs .eofif rs(no)=002 then rs.Deleteif rs(no)=004 then rs(age)= rs(age)+1rs.movenext we

12、ndrs.update / 由于改动的表的内容,故要更新原表4 数据库的关闭数据库在网络上是共享的,在使用完数据库后要及时关闭它,否则可能造成数据丢失和破坏。具体的操作是在访问完数据后马上用close方法关闭所用过的查询和数据库。如:rs.close /关闭建立的rs指向的查询临时表ad.close / 关闭ad代表的系统与数据库的ADO连接5 结束语ASP+Access不仅可以方便、高率地处理一般数据,也可处理图片、声音数据,由于篇幅有限,本文不予讨论。一个实用的网站离不开动态网页,ASP+Access技术在目前的网站建设中应用很广泛且在不断地发展,新方法、新思路层出不穷,学习动态网页的过程

13、是长期和艰难的,需要勇于动手实践,打破陈规,摸索出自己的一套方法。应用举例1 动态地输出表格:见例子YY文件夹下的ASP1.HTM及其所有的链接文件。 本例可以自动地根据数据行的多少来输出表格,具有应用通用性2 数据库内的数据追加:见例子- YYlesson11下的samp10.HTM及其所有的链接文件. 本例可实现把表单内的数据以记录形式追加到数据库中3 数据库内的数据维护:见YY文件夹下的ASP2.HTM及其所有的链接文件。此例子比较复杂。应用了多项技术4 数据库内数据的删除:见YY文件夹下的ASP2.HTM中的删除部分及其所有的链接文件。5 密码验证,密码维护:见 ASP+ACCESS深

14、入部分在笼统地讲了一些概念和一些实例后,下面我们再次回头系统地学习一下ASP+ACCESS中的关键技术。ASP与数据库应用(给初学者)见最近许多网友询问一些关于数据库操作的基础问题,现把我以前写的一篇简单教程贴上来,好让一些初学者最快的入门:ASP与数据库应用(给初学者)一般来说,一个真正的、完整的站点是离不开数据库的,因为实际应用中,需要保存的数据很多,而且这些数据之间往往还有关联,利用数据库来管理这些数据,可以很方便的查询和更新。数据库有很多种,如:Fox 数据库(.dbf)、Access 数据库(.mdb)、Informix、Oracle 和 SQL Server 等等,在这里,我将以

15、Microsoft Access 数据库为例来说明ASP是如何访问数据库的。常用数据库语句1.SELECT 语句:命令数据库引擎从数据库里返回信息,作为一组记录。2.INSERT INTO 语句:添加一个或多个记录至一个表。3.UPDATE 语句:创建更新查询来改变基于特定准则的指定表中的字段值。4.DELETE 语句:创建一个删除查询把记录从 FROM 子句列出并符合 WHERE 子句的一个或更多的表中清除。5.EXECUTE 语句:用于激活 PROCEDURE(过程)用 ASP 来做一个自己的通讯录练练手吧一、建立数据库:用 Microsoft Access 建立一个名为 data.mdb

16、 的空数据库,使用设计器创建一个新表。输入以下几个字段:字段名称数据类型说明其它ID自动编号数据标识字段大小:长整型新值:递增索引:有(无重复)username文本姓名缺省值usermail文本E-mail缺省值view数字查看次数字段大小:长整型默认值:0索引:无indate时间日期加入时间缺省值保存为 data.mdb 文件,为了便于说明,只是做了一个比较简单的库。二、连接数据库方法1:Set conn = Server.CreateObject(ADODB.Connection)conn.Open driver=Microsoft Access Driver (*.mdb);dbq=&S

17、erver.MapPath(data.mdb)方法2:Set conn = Server.CreateObject(ADODB.Connection)conn.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&Server.MapPath(data.mdb)注意:一个页面中,只要连接一次就可以了,数据库使用完后要及时关闭连接。conn.CloseSet conn = Nothing三、添加新记录到数据库Set conn = Server.CreateObject(ADODB.Connection)conn.Open driver=Micros

18、oft Access Driver (*.mdb);dbq=&Server.MapPath(data.mdb)username = 风云突变usermail = fytbindate = Now()sql = insert into data (username,usermail,indata) values(&username&,&usermail&,&indate&)conn.Execute(sql)conn.CloseSet conn = Nothing说明:建立数据库连接;通过表单获取姓名、E-mail 字符串,Now()获取当前时间日期;使用 insert into 语句添加新记录;

19、conn.Execute 来执行;最后关闭。四、选择数据库里的记录1.选择所有记录的字段(按记录倒序排序):sql = select * from data order by ID desc2.选择所有记录的姓名和E-mail字段(不排序):sql = select username,usermail from data3.选择姓名为“风云突变”的所有记录:sql = select * from data where username=风云突变4.选择使用 163 信箱的所有记录(按查看次数排序):sql = select * from data where usermail like % o

20、rder by view desc5.选择最新的10个记录:sql = select top 10 * from data order by ID descSQL 语句已经知道了,不过在Web应用时,还得创建一个 RecordSet 对象得到记录集,才能把从数据库里取出的值应用在网页上,如果现在将所有的记录显示在网页上就这样:Set conn = Server.CreateObject(ADODB.Connection)conn.Open driver=Microsoft Access Driver (*.mdb);dbq=&Server.MapPath(data.mdb)sql = sele

21、ct * from dataSet rs = Server.CreateObject(ADODB.RecordSet)rs.Open sql,conn,1,1Do While Not rs.EofResponse.Write 姓名:& rs(username) &E-mail:& rs(usermail) &查看:& rs(view) &次& rs(indate) &加入rs.MoveNextLooprs.CloseSet rs = Nothingconn.CloseSet conn = Nothing说明:建立数据库连接;创建 rs 得到记录集;循环显示记录,rs.Eof 表示记录末,rs.

22、MoveNext 表示移到下一个记录;最后关闭。五、修改(更新)数据库记录修改记录的E-mail:Set conn = Server.CreateObject(ADODB.Connection)conn.Open driver=Microsoft Access Driver (*.mdb);dbq=&Server.MapPath(data.mdb)ID = 1usermail = fytbsql = update data set usermail=&usermail& where ID=&CInt(ID)conn.Execute(sql)conn.CloseSet conn = Nothin

23、g说明:建立数据库连接;获取记录ID、新 E-mail 字符串;使用 update 语句修改记录;conn.Execute 来执行;最后关闭。如果使记录的查看值加1,则:sql = update data set view=view+1 where ID=&CInt(ID)六、删除数据库记录删除某一条记录:Set conn = Server.CreateObject(ADODB.Connection)conn.Open driver=Microsoft Access Driver (*.mdb);dbq=&Server.MapPath(data.mdb)ID = 1sql = delete f

24、rom data where ID=&CInt(ID)conn.Execute(sql)conn.CloseSet conn = Nothing说明:建立数据库连接;获取记录ID;使用 delete 语句删除记录;conn.Execute 来执行;最后关闭。删除多条记录为:sql = delete from data where ID in (ID1,ID2,ID3)删除所有记录为:sql = delete from data总结:以上教程是针对ASP的初学者而写的,只是介绍了一些基本的用法,在了解之后可以自己去试试,重要的在于能举一反三、综合运用。更多的语法和参数请参阅 Microsoft

25、Access 帮助中的 Microsoft Jet SQL 参考,由于本人才疏学浅、能力有限,如有表达不明确有地方还望指出,如果在应用当中遇到什么问题,也希望能够提出。谢谢。VBScript函数补习课最近在看CSDN论坛的时候发现很多人还在问一些基本的ASP问题,而且有很大一部分是围绕着一些常用的VBSCRIPT函数。在这里我想有必要点一下常用的几个函数。我们不需要背出函数定义,但是我们需要知道这个函数,在必要的时候想到去用。1、我怎么在一个日期上加上一个日期?DateAdd( interval , number , date ) 参数interval 必选项。字符串表达式,表示要添加的时间间

26、隔。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(

27、 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

28、 , IncludeLeadingDigit , UseParensForNegativeNumbers , GroupDigits ) 参数Expression 必选项。要被格式化的表达式。 NumDigitsAfterDecimal 可选项。指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。 IncludeLeadingDigit 可选项。三态常数,指示是否显示小数值小数点前面的零。UseParensForNegativeNumbers 可选项。三态常数,指示是否将负值置于括号中。GroupDigits 可选项。三态常数,指示是否使用计算机区域设置中指定的数字分组

29、符号将数字分组。 设置 IncludeLeadingDigit、UseParensForNegativeNumbers 和 GroupDigits 参数可以有以下值: 常数 值 描述 TristateTrue -1 True TristateFalse 0 False TristateUseDefault -2 使用计算机区域设置中的设置。 例子:将1/3格式化为四位小数,带小数点前0的格式 FormatNumber(1/3, 4,-1)4、我怎么得到现在的时间、日期、年份、月份等?时间:Now()日期:Date()年份:Year(Date()月份:Month(Date()天数:Day(Dat

30、e()小时:Hour(now()分钟:Minute(Now()秒:Second(Now()5、我怎么把从数据库读出的新闻标题显示部分?Left( string , length ) 参数 string 字符串表达式,其最左边的字符被返回。Length 数值表达式,指明要返回的字符数目。如果是 0,返回零长度字符串 ();如果大于或等于 string 参数中的字符总数,则返回整个字符串 Len( string | varname ) 参数 string 任意有效的字符串表达式。Varname 任意有效的变量名。假设新闻标题为rs(topic),我们只想输出10个字符,对于少于10个字符的则输出全

31、部,那么我们这么写:10 thenResponse.Write Left(rs(topic),8)&. 也不要一定8,怎么好看怎么设置,因为后面加了.所以我们少截取一些elseReponnse.Write rs(topic) end if% 在ASP中使用SQL语句之1:SELECT 语句 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了。但你要同时采用ASP和SQL的话就可能会头晕。MySQL、SQL Server和mSQL都是绝佳的SQL工具,可惜,在ASP的环境下你却用不着它们来创建实用的SQL语句。不过,你可以利用自己掌握的Access知识以及相应的Access技能,

32、再加上我们的提示和技巧,相信一定能成功地在你的ASP网页中加入SQL。 在SQL的世界里,最最基础的操作就是SELECT 语句了。在数据库工具下直接采用SQL的时候很多人都会熟悉下面的操作:SELECT whatFROM whichTableWHERE criteria执行以上语句就会创建一个存放其结果的查询。而在ASP页面文件上,你也可以采用以上的一般语法,不过情况稍微不同,ASP编程的时候,SELECT 语句的内容要作为字符串赋给一个变量: SQL = SELECT what FROM whichTable WHERE criteria好了,明白了ASP下SQL“说话”的方式,接下来如法炮

33、制即可,只要满足你的需要,传统的SQL查询模式和条件查询都能派用场。举例说明,不妨假设你的数据库内有个数据表,名字是Products ,现在你想取出这个表里的全部记录。然后你就编写了下面的代码: SQL =SELECT * FROM Products以上代码SQL语句的作用就是取出表内的全部数据执行后将会选出数据表内的全部记录。不过,要是只想从表内取出某个特定列,比如p_name。那就不能用 * 通配符了,这里得键入具体某列的名字,代码如下: SQL =SELECT p_name FROM Products执行以上查询之后Products 表内、p_name 列的内容就会全被选取出来。 在AS

34、P中使用SQL语句之2:使用WHERE子语句 有的时候取出全部数据库记录也许正好满足你的要求,不过,在大多数情况下我们通常只需得到部分记录。这样一来该如何设计查询呢?当然会更费点脑筋了,何况本文也存心不想让你去用那个什么劳什子的recordset。 举个例子,假如你只打算取出p_name 记录,而且这些记录的名字必须以字母w打头,那么你就要用到下面的WHERE 子句了:SQL =SELECT p_name FROM Products WHERE p_name LIKE W%WHERE 关键词的后面跟着用来过滤数据的条件,有了这些条件的帮助,只有满足一定标准的数据才会被查询出来。在以上的例子里,

35、查询的结果只会得到名字以w 打头的p_name 记录。以上例子中,百分比符号(%)的含义是指示查询返回所有w 字母打头而且后面是任何数据甚至没有数据的记录条目。所以,在执行以上查询的时候, west 和 willow 就会从Products 表内被选取出来并存放在查询里。就像你看到的那样,只要仔细地设计SELECT 语句,你就可以限制recordset 中返回的信息量,多琢磨琢磨总能满足你的要求。这些啊还不过是掌握SQL用途刚起步。为了帮助你逐步掌握复杂的SELECT 语句用法,下面就让我们再来看一下关键的标准术语:比较运算符,这些玩意都是你在构筑自己的SELECT 字符串来获得特定数据时要经

36、常用到的。WHERE子句基础在开始创建WHERE 子句的时候,最简单的方式是采用标准的比较符号,它们是 、 、 = 、 和 =。显然,你很快就能明白以下代码的含义和具体运行结果:SELECT * FROM Products WHERE p_price = 199.95SELECT * FROM Products WHERE p_price 19.95SELECT * FROM Products WHERE p_version = 4注意: 这里你会注意到,最后一个例句中的数字4周围加了单引号。原因是这样的,在这个例子中的 4 是文本类型而非数字类型。因为你会把 SELECT 语句放到引号中来把

37、它作为一个值赋给变量,所以你也可以在语句中采用引号。比较运算符比较运算符指定从表内取出数据的内容范围。你可以用它们来创建过滤器以便缩小recordset的范围,促使其只保存给定任务下你关心的信息。在ASP中使用SQL语句之3:LIKE、NOT LIKE和 BETWEEN 你已经在上面取出w打头记录的例子中看到了LIKE的用法。LIKE判定词是一个非常有用的符号。不过,在很多情况下用了它可能会带给你太多的数据,所以在用到它之前最好先开动脑筋多想想自己到底想获得什么数据。假设你想取出5位数字的SKU号码,而且其开头是1结尾是5,那么你可以用下划符(_)代替%符号:SQL = SELECT * FR

38、OM Products WHERE p_sku LIKE 1_5 下划符表示任意一个字符。所以在输入“1 _ _ _ 5”的情况下,你的搜索就会限制在满足特定模式的5位数范围内了。假如你想反其道而行之,要找出所有不匹配“1_ _ _ 5”模式的SKU条目。那么你只需要在刚才语句例子中的LIKE前面加上NOT就可以了。BETWEEN假设你想取出一定范围内的数据,而且你事先知道范围的起点和终点,那么你不妨采用BETWEEN 判断词。现在就让我们假设你想选取给定表内范围在 1和 10之间的记录。你可以如下使用BETWEEN:WHERE ID BETWEEN 1 AND 10或者你也可以采用已经熟悉的

39、数学判断字句:WHERE ID = 1 AND ID = 10 在ASP中使用SQL语句之4:联合语句我们到目前为止所谈到的SQL语句相对较为简单,如果再能通过标准的recordset循环查询,那么这些语句也能满足一些更复杂的要求。不过,何必非要拘泥在浅尝则止的基础水准之上呢?你完全可以再增加其他一些符号,比如AND、 OR和NOT来完成更强大的功能。 以下面的SQL语句为例:SQL =SELECT c_firstname, c_lastname, c_email FROM customers WHERE c_email ISNOT NULL AND c_purchase = 1 OR c_p

40、urchase = 2 AND c_lastname LIKEA%就你目前所掌握的SQL知识,以上的例子也不难解释,不过上面的语句并没有很明白地让你看清条件字句是如何胶合在单一SQL语句中的。多行语句在SQL语句不好懂的情况下,你不妨把整个语句分解为多行代码,然后在现有变量基础上逐步增加查询语句的各个组成部分并把它存在同一变量内: SQL = SELECT c_firstname, c_lastname, c_emailaddress, c_phoneSQL = SQL & FROM customersSQL = SQL & WHERE c_firstname LIKE A% and c_em

41、ailaddress NOT NULLSQL = SQL & ORDER BY c_lastname, c_firstname到了最后一句,SQL变量就包含了以下的完整SELECT 语句:SELECT c_firstname, c_lastname, c_emailaddress, c_phone FROM customersWHERE c_firstname LIKE A% and c_emailaddress NO NULL ORDER BY c_lastname,c_firstname整句照上面分解之后显然好读多了!在进行调试的时候,你或许更乐于多敲几个字符把程序改得更好读些。不过你可要

42、记住了,在封闭引号之前或者在打开引号之后你需要增加空格,这样才能保证字符串连接起来的时候你没有把几个词凑到了一块。在ASP中使用SQL语句之5:开始执行 在学会了SELECT语句的构造和用途之后你就该学习如何使用它了。在你所掌握的数据库工具下,这可能意味着你得按下某个写着“执行”字样的按钮。在ASP网页上,可以立即执行SQL语句也可以当作存储过程调用。 一旦创建了SQL 语句,你还得设法访问其查询结果。显然,这里的关键就是ASP recordset。在使用非SQL的recordset时,创建recordset的代码通常如下所示:Dim objRecSet objRec = Server.Cre

43、ateObject (ADODB.Recordset)objRec.Open customers, objConn, 0, 1, 2如果你对ASP比较熟悉以上的代码对你可就不陌生了,你应该知道“customers”表示你打开数据库内一个数据表的名字。打开recordset为了充分利用你更为熟悉的SQL技能,你需要调整常规ASP网页上最常采用的recordset:Dim objRecSet objRec = Server.CreateObject (ADODB.Recordset)objRec.Open SQL, objConn, 0, 1, 2这里唯一的修改就是在objRec.Open,之后用

44、包含SQL语句的变量代替了要查询的数据表的名称。这种方法的优点之一是你可以指定游标类型(如以上0, 1 ,2 所示)。执行SQL你可以用紧凑的一行代码执行SQL语句来创建recordset。以下是语法:Dim objRecset objRec = objConn.Execute(SQL)在上例中,你所看到的SQL是你存放自己SQL SELECT 语句的变量。该代码行“运行”SQL语句(或者说对数据库进行查询),选取数据并把数据存放在recordset 内,在上例中就是变量objRec。这种方法的主要缺点是你不能选择自己想采用的游标类型。相反,recordset总是用前向游标打开。因为游标的缘故

45、,你或许打算熟悉两种创建recordset的方法。直接执行查询节省了键入字符所消耗的时间,但那样的话你就得采用默认的游标了,这样有可能遭遇经常不能正常运行的毛病。不管你具体采用哪种办法,两者之间的最大的差别也不外乎代码精练与否。在不考虑你取得什么字段、你的标准是什么的前提下,也不管你如何存储数据,采用SQL式的recordset 在体积上会比ASP上打开的标准recordset 要小得多,更别提操作起来的简易性了。毕竟,通过过滤数据,你消除了耗费时间的if-then 测试和可能用到的循环。编写测试用SQL这里有个技巧,许多专业ASP程序员习惯在测试网页的时候“编写”自己的SQL语句。这样做可以

46、帮助你调试代码,因为你可以从中看到传递给服务器执行的字符串。而你要做的无非是增加Response.WriteyourVariable 在屏幕上显示有关信息。在你把和SQL有关的问题提交给ASP讨论组的时候你就应该附上这些信息。在ASP中使用SQL语句之6:存储查询 当你的查询相对简单的时候,每次从头开始创建SQL语句也不费什么工夫,不过,复杂的查询就不同了,每次都从头来会产生很多开发错误。因此,一旦让SQL顺利地运行起来,你最好把它们存起来,在需要时再调用它们。这样,哪怕是一个简单查询你都能随时用上存储的查询语句了。 假设你每周都要给团队做一次报告,指出目前存在的业务支持问题,这些数据需要从你

47、的数据库中选取,而且要按照日期选择记录,同时根据你所在团队所采用的支持问题的类别排序。一旦你设计了这一查询,你何必以后每周都重新编写一次呢?不要在你的HTML页面上创建查询,你应该用你的数据库工具创建查询并且保存它。 然后你可以采用ActiveCommand 属性把查询插入到你的ASP网页。头一两回你可能会觉得没啥意思,其实也就几行代码而已:Set objSQ = Server.CreateObject (ADODB.Command)objSQ.ActiveConnection = databaseNameobjSQ.CommandText = storedQueryNameobjSQ.Com

48、mandType = adCmdStoredProcset objRec = objSQ.Execute注意,采用adCmdStoredProc 表示你已经在页面上包含了adovbs.inc 文件。该文件定义了你可以按照名字而非数字进行访问的Access常数。只需要在页面上包含该文件即可?!-#INCLUDE -),然后你就可以用adCmdStoredProc 这类名字了。这样,将来你再看到的时候更容易理解以上被存储的查询到底是个什么意思。在ASP中使用SQL语句之7:ORDER BY 从Access数据库中选取记录有件最令人丧气的事情,它们是以怎样的顺序输入到数据库内就按照怎样的顺序出来。就

49、算你在Access环境内采用Sort By来改变记录视图,数据表内的记录顺序也并没有发生改变。 如果你正在使用ASPrecordset在网页上写出记录,那么你或许知道乱纷纷的顺序是多令人痛苦的事。但是你可能不得不经常得面对这一问题,因为并不存在什么简单方便的解决方案。好在ORDER BY 可以简化这一难题。为了对你的结果排序,只要在SELECT语句末尾加上ORDER BY,然后指定你需要排序的参照列即可。因此,如果你想要根据顾客的姓氏对Customers表排序,那么你可以编写如下的查询语句:SQL = SELECT c_lastname, c_firstname, c_email FROM C

50、ustomers ORDER BY c_lastname这样,只要你建立了recordset而且开始把结果写到屏幕上,你就会看见数据按照字母顺序排列起来了。多级排序其实不仅仅可以在SQL语句中进行一级排序。实际上,在很多情况下,你可能会希望指定两到三级深度的数据排序。假设你有以下数据表,其内容如下所示: image003.gif为字符串中的网址加上链接 我们有时候可能会有这样的要求,如果我们输入了一段带有链接的文字,如:“今天,我访问了中央电视台的网站: ”那么,我们希望能自动为我们的“”这几个字符加上链接,事实上,很多网站都有这个功能,因此,阿余也试着写了一段这样的小程序,一个可以用来方便大

51、家,另一个也可以为初学者提供一点源代码,所以,代码的过程阿余尽可能的写得简单易懂,所以有的地方看起来就有一点罗索了。当然,高手看了就要给阿余提点意见了。阿余的站在: 欢迎高手们批评指正.好了。下面介绍一下这个程序的基本思路1. 首先,找出一段文字中有哪一些链接,把它们存于数组中2.找出们在文本中的位置,把它们存放于数组中.3.根据这些位置,把一整段文本分成一个个的小段,以便在中间插入链接.4.在中间插入链接,并把这一段段的文本组合起来.好了,基本思想就是这样,其实前面的3步完全可以合在一起完成的,但为了程序容易看懂,我就把它们分开了.为了方便使用,我把它们做成了一个子函数,并顺便起了个名字叫C

52、TOU()用法:1 把下面的代码复制到文件的任何一个位置,2 如要把存于变量 MYDOC中的字符加上链接,就用MYDOC=CTOU(MYDOC)就行了.代码如下:Function CTOU(MYCH)On Error Resume nextTE1=MYCHIF INSTR(TE1,_bLaNk)=0 THENTE2=LCASE(TE1)zcd=len(te2)dim star(100),myend(100),myurl(100),te3(100,2)for i=1 to 100CD=LEN(TE2)STA=INSTR(TE2,http:/)if sta=0 then STAR(I)=ZCD+1

53、exit forEND IFurla=mid(te2,sta,50)urcd=instr(urla,)if urcd=0 then urcd=instr(urla, )if urcd=0 then urcd=instr(urla,)if urcd=0 then urcd=instr(urla,chr(34)if urcd=0 then urcd=instr(urla,)if urcd=0 then urcd=50myurl(i)=mid(te2,sta,urcd-1)MYEN=STA+URCDif myen = CD then exit forte2=right(te2,CD-myen+2)n

54、ext以上一段找出有哪一些URLTE2=LCASE(TE1)FOR II=1 TO IIF MYURL(II) THENSTAR(II)=INSTR(TE2,MYURL(II)&)IF STAR(II)=0 THENSTAR(II)=INSTR(TE2,MYURL(II)& )IF STAR(II)=0 THENSTAR(II)=INSTR(TE2,MYURL(II)&)IF STAR(II)=0 THENSTAR(II)=INSTR(TE2,MYURL(II)&chr(34)IF STAR(II)=0 THENSTAR(II)=INSTR(TE2,MYURL(II)&)IF STAR(II)

55、=0 THENSTAR(II)=INSTR(TE2,MYURL(II)MYEND(II)=STAR(II)+LEN(MYURL(II)END IFNEXT以上一段找出这些URL的开始和结束位置TE2=TE1for i1=1 to iif i1=1 thente3(i1,1)=mid(te2,1,star(i1)-1)elsete3(i1,1)=mid(te2,myend(i1-1),star(i1)-myend(i1-1)end if te3(i1,2)=mid(te2,star(i1),len(myurl(i1)next以上一段把原来的字符串分成一个小的小段以便插入链接for ii=1 to iIF MYURL(II) THENnewte=newte&te3(ii,1)&te3(ii,2)&ELSEnewte=newte&te3(ii,1)END IFnext以上一段插入链接CTOU=NEWTEELSECTOU=TE1END IFEND Function

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!