ASP语法基础
1.1 VBScript语法简介
    由于本文主要使用VBScript编写ASP脚本,因此在这一节中主要介绍VBScript的一些简单语法,这些语句对于编写一个简单的论坛来说已经足以胜任了。如果你了解VB的语法就请跳过这一节,因为本节涉及的语法决不会比你所学的更多;如果你曾经学习过任一种语言,那么本节只需简单的浏览即可,因为下面这些VBScript语法与你所学的语言中相应语法是类似的;如果你是个初学者,不要担心,VBScript是只要认字就能理解的简单工具。
    (1)条件判断语句IF:
       句法:if [条件式1] then
               [语句块1]
            elseif [条件式2] then
               [语句块2]
            ......(n)
            else
               [语句块n+1]
            end if
   BASIC是相当易用的,我们从它的IF语句就很容易看出这一点。如同其它任何一种语言,条件式中主要是对于表达式值的判断,主要包括相等(=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)和不等(<>),对于BOOL型的变量,判断为真(TRUE)只要直接用[变量名]作为判断式即可,为假(FALSE)只要使用[not 变量名]进行判断。不同的判断条件之间可以使用and/or连接,and类似于C语言中的&&,表示同时满足and左右两边的条件;or类似于||,表示或者满足or左侧的条件或满足其右侧的条件均可视为判断成立。对于各种判断符号的使用我们将在后面的实际应用中进一步讲解。
    elseif语句在其它许多种语言中是不存在的(如被广泛使用的C语言)elseif的作用正如其字面的意义,是在所有不满足上一次判断要求的剩余情况中进行进一步的分类判断,它所使用的判断和if是一致的。elseif的使用虽然感觉上很像switch语句,但在实际的使用中还是能够感觉到一些不同的,在后面遇到使用它的时候再详细地介绍。
    else的作用于其它语言中的else一样,表示对于不满足判断条件的情况进行的处理(如果使用了elseif就表示对所有判断都不满足时所进行的处理)
    end if标志着一套if语句的结束,如果忘记了end if(这是初学者常犯的毛病,尤其是当你比较熟悉C那样简练的语言的时候)往往会使ASP解析失败,并且返回错误的错误报告(也就是报告的错误位置并不存在任何错误)。如果if语句能在一行之内结束就可以省略掉end if语句,但每一个if都配套一个end if不失为一种良好的习惯。
    (2)do while [条件式]
         [语句块]
       loop
    do whileVBScript的一种循环语句,另一种与之类似的语句是wend,二者几乎没有区别。do while 所使用的条件式与if语句是一样的,其运行效果是在条件式成立的情况下反复顺序执行do whileloop之间的语句块。使用do while语句时一定要注意避免死循环的出现,这一条对于所有的循环语句都是适用的。
    (3)select case [变量名]
           case [变量取值]:
                           [语句块1]
           ......(n)
           case else:
                           [语句块n+1]
       end select
    该语句的作用和用法与普通C语言的switch语句是一样的,对指定变量的取值进行判断,不同的取值执行相应的case下的语句块,case else相当于default,其中的语句块用来处理不满足所有case的情况,select的结束由end select标示。
    (4)for [步进变量] to [目标步数] (step [步长]    ’默认为1)
       [语句块]
       next
    for是另外一类循环语句,功能是将语句块执行[目标步数]/([步进变量]*[步长])次,下面我来举个例子。for i=1 to 16,该语句表示先赋予步进变量i初值1,之后每循环一次i自动增加一个步长(本例中没有输入步长表示使用默认值),直到i值超过16退出循环,即循环16次;如果将其改为for i=1 to 16 step 2,循环次数将减少为8次。
    (5)dim [变量名]
    VBScript使用dim关键字来声明变量,已被声明的变量可以作为任何类型的变量来使用(对于使用像C那样严格区分变量类型的语言的人来说这实在是一大福音)。切记,任何变量一定要保证在使用之前进行了声明,并且除非在循环中,否则重复声明一个变量也是非法的。
    (6)字符串拼接操作符&
    &的执行结果是将其左右的两个字符串拼接成一个,这将是我们常用的一个操作符。
    至此本文中使用的一些主要VBScript语法就介绍完了,好像种类很少的样子,但ASP本身就是与HTML联合使用的(ASP中略有变化,详情请参考本站相关文章),只需要这些基本的VBScript判断和循环语句就可以完成我们的设计了。下面我们来看看SQL语句的使用方法。
1.2 SQL基本语句用法
    只要程序设计中与数据库有关就免不了要和SQL语句打交道,这些简单的近似自然语言
的句子提供了访问世界上任何一种标准数据库的统一接口,只要安装了数据库驱动我们就能通过编写SQL命令访问相应的数据库读取、添加或删除数据,而不管该类数据库的前端软件是否存在(对于本文中的例子就是即使不安装MS Access也可以访问*.mdb的数据库,但为了能更好的控制整体数据和监视程序对数据库的修改,还是建议读者在编写过程中安装一个Access)。要在ASP中使用SQL语句访问数据库首先要做的是建立通向数据库的连接,这部分的内容我要放在1.3节中再讲,下面我们先一起来学习使用SQL语句。
    (1)select [数据内容] from [数据表名称] where [数据项1] like [1] and/or [数据项2] like [2] ... order by [数据项] asc/desc
    select语句用来从数据库中筛选出所需要的数据,它是SQL语句中使用频率最高的语句,[数据内容]部分表示所要选取的表格中的数据项,使用*表示选取全部。[数据表名称]表示要从哪一个表格中选取,如果你没有接触过数据库可能很难了解什么是数据表格,没关系,我将在后面用到它的时候再说明。where表示选取的条件,使用like表示相等,也支持>=这样的判断符号,同时使用多个条件进行选取时中间要使用and进行连接。order by决定数据的排列顺序,asc表示按照[数据项]中的数据顺序排列,desc表示倒序,默认情况为顺序。select语句中除selectfrom之外其它均为可选项,如果都不填写表示选取该数据表中
的全部数据。
    (2)insert into [数据表名称] (数据项1,数据项2,...) values (1,2,...)
    insert into语句用来添加新的数据到数据库中的指定表。通过(数据项1,数据项2,...) values (1,2,...)来为新添加的数据赋初值。
    (3)update [数据表名称] set 数据项1=1,数据项2=2,... where [数据项1] like [1] and/or [数据项2] like [2] ...
    该语句可以修改数据库中指定数据表内的指定数据,如果不是用where限定条件就表示修改该表内所有的数据条目。
    (4)delete from [数据表名称] where [数据项1] like [1] and/or [数据项2] like [2] ...
    显然,这一句用来删除指定的数据。
    主要使用的SQL语句只有以上的4条,但是如果灵活的运用这四条语句可以实现相当多样的效果,当我们完成本文的例子论坛时你将会对此有更深刻的感受。接下来让我们了解一些关于ASP对象的知识。
1.3 ASP对象简介
    建立访问数据库连接的CONNECTION对象
    为了与上文衔接,我们先来看看如何建立到数据库的连接对象,这是使用ASP访问数据库的第一步。
    首先当然是声明一个变量,例如名为conn,之后如下赋值:
set conn=Server.CreateObject("ADODB.CONNECTION")
该操作的结果是定义connADODB.CONNECTION对象,要使该对象能够管理目的数据库还需要如下操作:
conn.open "DBQ="+server.mappath("bbs.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
server.mappath是调用ASPserver内建对象的mappath方法将目的数据库路径(本例中为bbs.mdb)转换为Server端本地路径。DRIVER指定数据库驱动名,该名称必须与控制面板->管理工具->数据源 (ODBC)中的驱动程序分页里名称段的文字完全一致才能正常工作(本例中以Win2000为操作系统,Win9x直接在控制面板下查ODBC工具)
    照此步骤建立的conn就是一个能够访问Access数据库bbs.mdbCONNECTION对像了,使用它执行SQL语句的方法是调用ute方法,也可以使用该方法使另一个变量具有直接访问某一数据表格的能力,具体语法是:set 变量名=ute ("数据表格名") ,我们在后面将会看到使用这一语句的实例。
    数据对象RECORDSET
    虽然CONNECTION对象本身已经能够进行对数据库的访问,但是每次读取数据都通过它调用SQL命令显得有些繁琐,而通过set 变量名=ute ("数据表格名") 创建的数据对象在数据的访问上也存在着严重的缺陷--只能顺序的访问下一条数据的内容。所有的这些不便都会增加对数据库操作的难度,因此为了实现简单的数据库访问我们有了RECORDSET对象类型。
    RECORDSET对象的建立方法为:
set 变量名=ateobject("dset")
变量名.open ("选取数据的SQL语句"),conn,1,1    ’conn为已建立的CONNECTION对象
该操作的第三个参数为数据库的打开方式,可以选择的类型如下:
选项
asp脚本的应用教案数值
简介
adOpenDynamic
2
动态的数据库打开方式,其他用户所进行的修改、删除和新建等工作都会立即在数据对象中体现出来,并且支持全部类型的数据移动方式,除非提供者不支持,否则也可以进行书签操作
adOpenForwardOnly
0
默认值。只支持向前顺序访问数据,如果只需要顺序遍历全部数据,该方法可以提供较高的执行性能
adOpenKeyset
1
本文中大量使用的方式。无法看到其他用户添加的新数据,但被其他用户删除的数据将变为不可访问,同时可以看到其他用户所作的修改。在其它方面类似于adOpenDynamic
adOpenStatic
3
静态打开方式。在你使用数据是其他用户无法访问该数据
adOpenUnspecified
-1
不指定打开方式
第四个参数为锁定方式,具体介绍如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。