亲爱的读者,您是否对ASP 简述Application对象的和ASP基础入门:数据库查询语言1感到陌生?别担心,今天我将为大家介绍一些关于ASP 简述Application对象的和ASP基础入门:数据库查询语言1的知识,希望能够帮助大家更好地了解这个话题。

本文目录一览

ASP 简述Application对象的基本操作?

Application对象
web上的一个应用程序可以是一组ASP文件。这些ASP文件一起协同工作来完成某项任务。ASP中的Application对象用来把这些文件捆绑在一起。
Application对象用于存储和访问来自任何页面的变量,类似于session对象。不同之处在于,所有的用户分享一个Application对象,而session对象和用户的关系是一一对应的。
Application对象存有会被应用程序中的许多页面使用的信息(比如数据库连接信息)。这意味着可以从任何的页面访问这些信息。同时也意味着你可在一个地点改变这些信息,然后这些改变会自动反映在所有的页面上。
存储和取回Application变量
Application变量可被应用程序中的任何页面访问和改变。
可以像这样在"Global.asa"中创建Application变量:
<scriptlanguage="vbscript"runat="server">

SubApplication_OnStartapplication("vartime")=""application("users")=1EndSub

</script>

在上面的例子中,我们创建了两个Application变量:"vartime"和"users"。
可以像这样访问Application变量的值:
Thereare
<%
Response.Write(Application("users"))
%>
activeconnections.

遍历Contents
Contents包含着所有的application变量。我们可以通过对contents进行遍历,来查看其中存储的变量:
<%
dimi
ForEachiinApplication.Contents
Response.Write(i&"<br/>")
Next
%>

如果你不清楚contents集中的项目数量,可使用count属性:
<%
dimi
dimj
j=Application.Contents.CountFori=1toj
Response.Write(Application.Contents(i)&"<br/>")
Next
%>

遍历StaticObjects
可通过循环StaticObjects,来查看所有存储于Application对象中的对象的值:
<%
dimi
ForEachiinApplication.StaticObjects
Response.Write(i&"<br/>")
Next
%>

锁定和解锁
我们可以使用"Lock"方法来锁定应用程序。当应用程序锁定后,用户们就无法改变Application变量了(除了正在访问Application变量的用户)。我们也可使用"Unlock"方法来对应用程序进行解锁。这个方移除对Application变量的锁定:
<%
Application.Lock'dosomeapplicationobjectoperationsApplication.Unlock
%>


返回目录

ASP基础入门:数据库查询语言(1)


原定计划从本篇开始就要给大家介绍ASP内建的ActiveX
组件,但是考虑到我们在往后的学习中将会接触到大量的数据库查询,因此作者临时决定花一到两篇的篇幅向大家简要介绍一些数据库查询语言的基本知识,这其实也是学习
ASP
所必须掌握的一门知识。是否能够灵活地运用数据库查询语言,将直接关系到
ASP程序的执行效率等一系列问题,所以请各位务必重视。
相信很多朋友都听说过SQL
这个名字,如果你是计算机方面的行家,SQL
的大名一定是如雷贯耳。那么SQL究竟是什么呢?SQL一词实际上是
"StructuredQueryLanguage"
结构式查询语言的缩写,是用于对存放在计算机数据库中的数据进行组织、管理和检索的一种工具;是一种特定类型的数据库
--关系数据库。而控制这种数据库的计算机程序就是我们常说的
DBMS--数据库管理系统。譬如:SQLServer、Oracle、Sybase、DB2
等等。当用户想要检索数据库中的数据时,就通过SQL
语言发出请求,接着DBMS对该SQL
请求进行处理并检索所要求的数据,最后将其返回给用户,此过程被称作为数据库查询,这也就是数据库查询语言这一名称的由来。
SQL并不是象C、COBOL和Fortran语言那样的完整的计算机语言。SQL
没有用于条件测试的IF语句,也没有用于程序分支的Goto
语句以及循环语句For或Do。确切的讲,SQL是一种数据库子语言,SQL
语句可以被嵌入到另一种语言中,从而使其具有数据库存取功能。SQL
也非严格的结构式语言,它的句法更接近英语语句,因此易于理解,大多数
SQL语句都是直述其意,读起来就象自然语言一样明了。SQL
还是一种交互式查询语言,允许用户直接查询存储数据,利用这一交互特性,用户可以在很短的时间内回答相当复杂的问题,而同样问题若让程序员编写相应的报表程序则可能要用几个星期甚至更长时间。
在大部分ASP应用程序中我们都会接触到数据库,而我们在编写
ASP应用程序时用来进行数据库操作的标准语是SQL,因此SQL
语法的重要性是不言而喻的。下面,我们就从最常用的SQL语句SELECT
着手,一步一步地来学习SQL。
查询是SQL语言的核心,而用于表达SQL查询的SELECT
语句则是功能最强也是最为复杂的SQL
语句,它从数据库中检索数据,并将查询结果提供给用户。在本文中我们将建立一个名为
tianjiao的简单数据库,该库中存放了一个叫sales
的销售记录表,如下所示:
姓名
性别
工资
销售目标
销售额
地区
书生

2500
8000
9000
上海
吴冠军

3000
10000
9999
北京
雷鸣

2000
8000
10000
四川
雪儿

2500
5000
6000
广州
顾一

2600
9000
9800
大连
阿卓

2000
4000
4000
天津
熠天

4000
20000
20000
全国
在该表中有六列即六个字段:
姓名、性别、工资、销售目标、销售额、地区,首先我们用Select
语句列出姓名、销售目标和销售额:
Select姓名,销售目标,销售额Fromsales
结果如下:
姓名
销售目标
销售额
书生
8000
9000
吴冠军
10000
9999
雷鸣
8000
10000
雪儿
5000
6000
顾一
9000
9800
阿卓
4000
4000
熠天
20000
20000
然后,我们再列出所有男性的姓名、销售目标和销售额:
Select姓名,销售目标,销售额FromsalesWhere性别="男
"
结果如下:
姓名
销售目标
销售额
书生
8000
9000
吴冠军
10000
9999
雷鸣
8000
10000
顾一
9000
9800
熠天
20000
20000
接下来,我们做一个相对复杂的查询,列出销售额大于销售目标的所有男性的姓名、销售目标和销售额,并且按销售目标排序。
Select姓名,销售目标,销售额
Formsales
Where销售额
销售目标
And性别="男"
OrderBy销售目标
结果如下:
姓名
销售目标
销售额
书生
8000
9000
雷鸣
8000
10000
顾一
9000
9800
熠天
20000
20000
大家可以看到,对于简单查询,SQLSelect
语句和英文语法很相象,我们来分析一下SELECT
语句的完整格式,它包括六个子句,其中SELECT和FROM
子句是必须的,其它子句可以任选,每个子句的功能如下:
1、Select子句列出所有要求SELECT语句检索的数据项。它放在
SELECT
语句开始处,指定此查询要检索的数据项。这些数据项通常用选择表表示,即一组用“,”隔开的选择项。按照从左到右的顺序,每个选择项产生的一个列的查询结果,一个选择项可能是以下项目:
(1)、列名:标识FROM
子句指定表中的列。如果列名作为选择项,则SQL
直接从数据库表中每行取出该列的值,再将其放在查询结果的相应行中。
(2)、常数:指定在查询结果的每行中都放上该值。
(3)、SQL
表达式:说明必须将要放入查询结果中的值按表达式的规定进行计算。
2、From子句列出包含所要查询数据的表,它由关键字FROM
后跟一组用逗号分开的表名组成。每个表明都代表一个包括该查询要检索数据的表。这些表称为此
SQL语句的表源,因为查询结果都源于它们。
3、Where子句告诉SQL
只查询某些行中的数据,这些行用搜索条件描述。
4、GroupBy
子句指定汇总查询,即不是对每行产生一个查询结果,而是将相似的行进行分组,再对每组产生一个汇总结果。
5、Having子句告诉SQL只产生有GroupBy
得到的某些组的结果,和Where
子句一样,所需要的组也用一个搜索条件指定。
6、OrderBy
子句将查询结果按一列或多列中的数据排序。如果省略此子句,则查询结果将是无序的。
下面作者将提供一个简单但实用的运用SQL语句查询的ASP
程序供大家参考。
为了使大家更清楚更直接地了解SQL语法在ASP
中的应用,我们先将查询的所有核心过程写成一个名为query2table的SUB,然后利用
ASP的服务器端包容功能调用该SUB。请将以下语句剪贴到记事簿,保存为
subdBTable.inc文件,并置于虚拟目录asptest下:
%
subquery2table(inputquery)
setconntemp=server.createobject("adodb.connection")
conntemp.open"DSN=Student;uid=student;pwd=aspmagic"
setrstemp=conntemp.execute(inputquery)
howmanyfields=rstemp.fields.count-1
'统计数据库中的列数
%
tableborder=1tr
%
forI=0tohowmanyfields
%
tdb%=rstemp(I).name%/B/TD
%next%
/tr
%
dowhilenotrstemp.eof
%
tr
%forI=0tohowmanyfields
thisvalue=rstemp(I)
Ifisnull(thisvalue)then
thisvalue="?
'如果字段为空,则将变量thisvalue的值定义为一个空格
endif%
tdvalign=top%=thisvalue%/td
%next%
/tr
%rstemp.movenext
loop%
/table
%
rstemp.close
setrstemp=nothing
conntemp.close
setconntemp=nothingendsub%
完成了SUB的定义过程,在下面几个ASP
程序中我们只要加入想要使用的SQL
查询语句,并调用该过程就可以非常方便的得到查询结果。将以下四段代码分别保存为
asp11a.asp、asp11b.asp、asp11c.asp、asp11d.asp四个.asp文件。
HEADTITLEasp11a.asp/TITLE/HEAD
HTMLbodybgcolor="#FFFFFF"
%
callquery2table("select*frompublisherswherenamelike'A%%'")
'将表publishers中所有姓名中有字母A的记录查询出来
%
!--#includevirtual="/asptest/subdBTable.inc"--/BODY
/HTML
HEADTITLEasp11b.asp/TITLE/HEADHTML
bodybgcolor="#FFFFFF"
%
callquery2table("select*fromtitleswhereYear_Published
=1998")
'将表titles中所有发表年份大于或等于1998年的记录查询出来
%
!--#includevirtual="/asptest/subdBTable.inc"--/BODY
/HTML
HEADTITLEasp11c.asp/TITLE/HEADHTML
bodybgcolor="#FFFFFF"
%
callquery2table("select*frompublisherswhereamount10000and
sex='male'")
'将表publishers中所有数量大于10000且性别为男的记录查询出来
%
!--#includevirtual="/asptest/subdBTable.inc"--/BODY
/HTML
HEADTITLEasp11d.asp/TITLE/HEADHTML
bodybgcolor="#FFFFFF"
%
callquery2table("select*frompublisherswherestate
'NY'")
'将表publishers中所有所在城市不为纽约的记录查询出来。
%
!--#includevirtual="/asptest/subdBTable.inc"--/BODY
/HTML
利用subdBTable.inc文件中的所定义的过程query2table,你就可以非常迅速地对数据库进行查询,你所要做的只是将“conntemp.open
"DSN=Student;uid=student;pwd=aspmagic"”中的数据库名称、用户身份和密码稍加改动,并在调用
query2table时输入想要使用的SQL查询语句即可。是不是很简单?
这就是ASP和SQL的魅力所在!!!
今天,我们虽然用了一整篇的篇幅只学习了一个SQL
指令,但请你相信你所获得远不同于一个DOS指令,SELECT
指令使得你可以非常容易地对数据库进行查询,或许在这之前你对数据库查询还一无所知,但是通过本篇的学习,你其实已经会使用
ASP进行常用的数据库查询了,是不是很激动?
在下一篇中,作者将继续给大家介绍SQL

返回目录

如果您觉得本文对您有所帮助,请在文章结尾处点击“顶一下”以表示您的支持。如果您对本文有任何意见或建议,请点击“踩一下”,以便我们改进该篇文章。如果您想了解更多相关内容,请查看文章下方的相关链接。