您的位置:寻梦网首页编程乐园ASP编程>边学边用ASP日积月累
ASP世界
边学边用ASP日积月累
作者:佚名  转自:Internet

1、ASP 的“处理指令
  <%@ 关键字 %> 给出 ASP 处理 .asp 文件所需的信息。例如,以下指令将 VBScript 设置为页面的主脚本语言: <%@ LANGUAGE=VBScript %>
  处理指令必须位于 .asp 文件的首行。要在页面中添加多条指令,这些指令必须位于相同的分隔符内。请勿将处理指令置于由“#include”语句包括的文件内。必须在符号 @ 和关键字之间加入空格。处理指令具有以下关键字:
  LANGUAGE 关键字设置用于 .asp 文件的脚本语言。
  ENABLESESSIONSTATE 关键字指定 .asp 文件是否使用会话语句。
  CODEPAGE 关键字设置 .asp 文件的代码页(字符编码)。
  LCID 关键字设置文件的位置表示符。
  TRANSACTION 关键字指定 .asp 文件将在事务环境下运行。
  要点:可以在一条指令中包含多个关键字。关键字/值对必须由空格分开。等号两边不要留有空格。 以下示例既设置了脚本语言也设置了代码页:
  <%@ LANGUAGE="JScript" CODEPAGE="932" %>

  2、调试与数据库有关的程序
  调试与数据库有关的程序,不妨先在数据库里把sql测试一下,如果没有问题再将sql语句放到程序里。

  3、显示友好HTTP错误
  写asp程序调试时经常遇到500错误,可又不知道程序哪里错了。其实可在IE选项中的“高级”中勾选“显示友好HTTP错误”,调试程序的时候就会提示哪里有错误,这样会省去查找错误的很多时间。

  4、HTML中表单提交数据的方式
  ①用Get方法发送(限制信息长度):用Request.QuerySting获取,输入信息会显示在地址栏
  ②用Post方法发送(不限制信息长度):用Request.Form获取

  5、ASP中用来存取数据库的3个主要对象(ADO)
  ①Connection:负责打开或连接数据
  ②Recordset:负责存取数据表
  ③Command:负责对数据库执行查询命令

  6、在表格同一行里需插入二个重复区域(服务器行为)的解决的办法:利用表格嵌套,在同一行需要插入重复区域的单元格分别放置在不同的表格里。

  7、打开数据库之后固定修改某个字段
  conn.execute("Update 表名 Set 字段=字段+1 Where 字段=变量"

  8、显示数据库记录:将数据库中的记录一一显示到客户端浏览器。
  如果是从头到尾,用循环并判断指针是否到末,使用: not rs.eof;如果是从尾到头,用循环并判断指针是否到开始,使用:not rs.bof 。
  <!--#include file=conn.asp  '打开数据库
  <%
  set rs=server.createobject(adodb.recordset)  '建立记录集对象
  sqlstr=select * from message  'message为数据表
  rs.open sqlstr,conn,1,3  '打开数据库的方式,代表不同的指针类型
  rs.movefirst  '将指针移到第一条记录
  while not rs.eof  '判断指针是否到末尾
  response.write(rs(name))  '显示数据表message中的name字段
  rs.movenext  '将指针移动到下一条记录
  wend  '循环结束
  rs.close   '以下几句是用来关闭数据库、释放内存,次序不可以颠倒
  set rs=nothing
  conn.close
  set conn=nothing
  %>

  9、增加数据库记录:增加数据库记录用到addnew、update两个方法
  <!--#include file=conn.asp-->  '打开数据库
  <%
  set rs=server.createobject(adodb.recordset)  '建立记录集对象
  sqlstr="select * from message"  'message为数据库表
  rs.open sqlstr,conn,1,3  '表示打开数据库的方式
  rs.addnew  '建立缓冲区,系统将此记录自动设置为当前记录
  rs("name")=xx  '将xx的值传给name字段
  rs.update  '刷新数据库,如果未调用update方法前,指针从当前记录移开,ADO将自动调用update方法。
  rs.close
  conn.close  '以下几句是用来关闭数据库、释放内存
  set rs=nothing
  set conn=nothing
  %>
另:
  Fieldname=Array("收盘价","成交量")
  Fieldvalues=Array(30.5,3589)
  rs.update Fieldname,Fieldvalues

  10、删除记录:删除数据库记录主要用到rs.delete、rs.update
<!--#include file=conn.asp  '包含conn.asp用来打开user.mdb数据库
<%
dim name
name=xx
set rs=server.createobject(adodb.recordset)  '建立recordset对象
sqlstr="select * from message"  'message为数据库中的一个数据表
rs.open sqlstr,conn,1,3  '表示打开数据库的方式
while not rs.eof
if rs("name")=name then
rs.delete
rs.update  '查询数据表中的name字段的值是否等于变量name的值xx,如果符合就执行删除,
else  '否则继续查询,直到指针到末尾为止
rs.movenext
end if
wend
rs.close
conn.close  '以下几句是用来关闭数据库、释放内存
set rs=nothing
set conn=nothing
%>

  11、ActiveX组件
  是一个存在于WEB服务器上的文件,是包含在动态链接库.dll或可执行文件.exe中的可执行代码。组件可以提供一个或多个对象以及对象的方法和属性。要使用组件提供的对象,要先创建对象的实例并将这个新的实例分配变量名。使用ASP 的 Server.CreateObject 方法可以创建对象的实例,使用脚本语言的变量分配指令可以为对象实例命名。

  12、对象和类的概念
  在面向对象编程中,对象就是指由当作完整实体的操作和数据组成的变量,是一组属性和有权对这些属性进行操作的一组服务的封装体。对象是一些相关的变量和方法的软件集,或者说对象具有数据成员(变量)和方法,方法是它知道如何回答的问题。对象知道如何响应的方法集是对象的接口。一些方法对大家是公开的,意味着另一个对象可以调用它们,该方法集就是对象的公共接口。
  编程中的对象实际上是现实世界对象的造型,同现实世界中的对象一样,同样有状态和行为。对象由属性、方法和事件构成。一个软件对象利用一个或者多个变量来维持它的状态(由用户标识符来命名的数据项),用它的方法(跟对象有关联的函数或子程序)来执行它的行为。
  类,是指具有共同行为和特征的事物的集合。它跟对象紧密联系在一起,是某一类对象的“模型”,是对某种类型的对象定义变量和方法的原型。一个对象就是类的一个实例,也就是说,对象实际上就是一个值,而它的类型就是某个类。比如说人是区别于其它动物的一种对象,而婴儿就是此对象“人”的一个实例。一般来说,对象所能做的事情依赖于对象的类型,或者换句话说,它是哪个类的实例。

  13、属性
  对象有很多特性(特征),每一个特性称为属性。属性由属性名和值组成,属性的值域类型可以是整数型、实数型、字符串型等。如:学生(对象)有学号、姓名、年龄、性别等属性,相应值域为字符、字符串、整数和字符串型。

  14、方法
  “方法”对应于对象的能力,即对象本身能够做的事情,是实现对象所具有的功能的操作代码段(代码模块),是响应消息/事件的“方法”。简言之,方法就是对对象数据的操作、处理,改变对象的状态。
  跟方法紧密联系在一起的是“消息|事件”,消息是为了实现某一功能而要求某个对象执行其中某个功能操作的规格说明(触动原因)。它一般含有下述信息:提供服务的对象标识、服务标识、输入信息和响应信息。对象接收消息,根据消息及消息参数调用自己的服务,处理并予以响应,从而实现系统功能。
  方法与消息是一一对应的,每当对象收到一个消息,它除了能用其“智能化”的选择机制知道和决定应该去做什么(what to do)外,还要知道和决定该怎样做(how to do)。

  15、数据库的查询(查询字段为字符型):
  参考:《用户注册页面的ASP源代码》

  16、数据库的查询(查询字段为数字型):
  参考:《删除数据库记录的ASP源代码》之服务器端ASP源代码

  17、response对象
  与Request是获取客户端HTTP信息相反 ,Response对象是服务器端向客户端发送信息对象(HTML和其它各种信息),包括直接发送信息给浏览器,重新定向url,或设置cookie值(用于浏览器端存储用户的信息,如用户名、密码等)。
  语法:Response.collection|property|method
  <% resposne.write(要在浏览器端显示的信息) %>
  ()集合内必须是英文方式下的一对""双引号,如果是函数和数字类数据就不用了。使用时可用“&”来正确区分数字、函数、字符串或变量的混合输出
  <% response.redirect(重新定向url)%> '包括本站的页面和其它网站
  设置和读取cookies练习1:
  <%
  AccessTime=request.cookies("t")  '
  '通过response.cookie收集客户端时间信息(日期时间)并且将其赋值给变量t,再将变量t的值赋给变量AccessTime
  response.cookie("t")=now
  %>           '设置cookie语句必须放在<HTML>语句之前
  <%
  Response.write "上次访问时间"&":"&AccessTime&"</br>"
  Response.write"当前访问时间"&":"&now
  %>
  设置和读取cookies练习2:
  <%
  response.cookies("time_now")=now()
  response.write request.cookies("time_now")
  %>
  response对象向浏览器输出数据的三种书写格式:
  ①<% response.write(expression)%>
  ②<% response.write expression %>,如:
<%
Response.write hour(now)&":"&minute(now)&":"&second(now)&" "&"当前系统时间
%>
  ③<% = expression %> '在过程中不能使用
  '字符串用引号,数字不用引号;一对定界符只能有一个等号;可以不用括号;显示从表单获得的变量值不加引号。
  response对象停止输出数据:
  <%
  for a=1 to 500
  if a<30 then
  response.write " "&a
  else
  response.end()
  end if
  next
  %>

  18、request对象
  访问任何基于HTTP请求传递的信息,即将浏览器收集的信息发送给服务器处理或存储。包括从HTML表格用POST或GET方法传递的参数(POST方法可以大批量传送数据;GET传送的信息会在浏览器地址栏里面显示)、cookie和用户认证。如申请邮箱时所填写的个人信息就是通过该对象来传递给服务器的。   
  Request对象使您能够访问客户端发送给服务器的二进制数据。
  Request的语法:Request.集合|属性|方法(变量) 如:
  request.form(),request.querystring() //分别是接受post、get方法传来的信息
  movefirst 将记录指针移至第一条
  movelast 将记录指针移至最后一条
  movenext 将记录指针移至下一条
  moveprevious 将记录指针移至上一条
  bof 测试是否为recordset的起始
  eof 测试是否为recordset的结束
  open 打开Recoreset对象
  close 关闭recordset对象
  fields 读取数据的子对象
  fileds.count 字段个数
  pagesize 每页记录条数
  absolutepage 设定为某页
  pagecount 总页数
  Absoluteposition 直接跳至某条记录
  MicrosoftVBscript运行时错误列表(10进制表示)
  以下是一段表单的代码,这是提供给客户填写信息的,填写完了按“提交”传递给request.asp文件处理后再存入服务器数据库。
  <form name=form1 method=post action=request.asp>
  <p><input type=text name=user></p>
  <p><input type=text name=pass></p>
  <p><input type=submit name=submit value=提交></p>
  </form>
  那么request.asp该如何将其中的信息读入,在写入数据库,在这里就要用到request对象了,下面我们就来分析request.asp的写法。
  <%
  dim name,password  '定义两个变量
  name=request.form(“user”) '将表单中的user信息传给变量name
  password=request.form(“pass”) '将表单中的pass信息传给变量password
  %>

  19、session对象
  作为一个全局变量,在整个站点都生效。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。但由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制也可能需要借助于cookie机制来达到保存标识的目的。
  cookie的内容主要包括:名字,值,过期时间,路径和域。其中域可以指定某一个域,如.google.com,相当于总店招牌,比如宝洁公司;也可以指定一个域下的具体某台机器,如www.google.com或者froogle.google.com,比如宝洁公司的飘柔。
  路径就是跟在域名后面的URL路径,比如/或者/foo等等,可以用某飘柔专柜做比。
  路径与域合在一起就构成了cookie的作用范围。
  当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。
  属性:SessionID TimeOut 设定Session变量生存周期
  方法:Session.Abandon 删除所有存储在Session对象中的对象并释放这些对象的源。
  IsEmpty 测试Session变量是否存在
  事件:ession_OnStart与Session_OnEnd事件必须写在Global.asa文件之中。
  ①Session_OnStart事件:在服务器创建新会话时发生,服务器在执行请求的页之前先处理该脚本。此事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先设置它们。
  ②Session_OnEnd事件:在会话被放弃或超时发生。
  举例:在session里面定义一个login字符串变量,值为"yes",可以直接赋值,不需声明。
  <%
  session("login")="yes"
  %>
  登陆系统检测是不是管理员:
  if 是 then
  session("isadmin")=“yes"
  else
  session("isadmin")="no"
  end if
  需要管理员才能看的页面最前面代码:
  <%
  if not session("isaadmin")="yes" then
  response.redirect "login.htm"
  %>

  20、server对象
  提供对服务器上的方法和属性的访问,其中大多数方法和属性是作为实用程序的功能服务的。还可用来创建其它对象。
  语法:Server.property|method
  属性:ScriptTimeout
  方法:
  HTMLEncode 将字符串翻译成可接受的HTM格式一样
  URLEncode 根据URL规则对字符串进行正确编码
  Server.MapPath(Path) 将指定的相对或虚拟路径映射到服务器上相应物理目录上,即把虚拟路径转化成物理路径。
  CreateObject 创建一个对象实例,Server.CreateObject("Component Name")用于创建已经注册到服务器上的ActiveX组件实例
  ScriptTimeout:在终止前,一个脚本允许运行的秒数。

  21、ASP标记语言的书写方式
  ①用定界符<% …… %>括起来
  ②用脚本标记符<script language="vbscript" runat="server">…</script>相括
  ③一般变量赋值语句 "="
  ④对象赋值用 set 语句

  22、ASP使用的脚本语言
  ASP默认的脚本语言是vbscript,如需使用其它的语言,则必须在ASP文件中用一行代码指定,如:
  <%@ language="Javascript" %> language不能加s

  23、本机测试、浏览ASP网页
  http://127.0.0.1/index.asp 或用 localhost、计算机名(通过右键我的电脑查看)代替127.0.0.1

  24、ASP代码注释
  ①单行注释:<! 注释内容 !>
  ②多行注释:<!-- 注释内容 -->
  ③英文单引号 ' :单引号之后的文字都视为注释,输出表达式中不能包含注释。
  ④rem:rem之后的文字都视为注释,Rem在有代码的行上加注释用冒号隔开。
  没有必要包含HTML注释标记,用来对不支持脚本的浏览器隐藏脚本,这是客户端脚本的通常做法,而所有ASP命令都将在内容发送到浏览器之前处理,处理脚本时将删除这些注释并且不会发送到浏览器。

  25、Application对象
  用来存储、读取用户共享的应用程序信息,如可以用此对象在网站的用户间传送信息,当服务器重启后信息丢失。即在给定的应用程序的所有用户之间共享信息,并在服务器运行期间持久的保存数据。而且Application 对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。
  设置用户定义的属性|集合: Application("属性|集合名称")=值
  Application对象的方法有二个,参见第26条:最简单的ASP计数器。
  Lock 锁定Application变量,防止其它用户访问Application集。
  Unlock 解除Lock指令的锁定,使其它用户可以访问Application集。
  Application对象的事件有二个,Application_OnStart与Application_OnEnd,都必须写在Global.asa文件之中。
  OnEnd:由终止网络服务器、改变Global.asa文件触发。
  OnStart:由应用程序中对网页的第一次申请触发。
  IsEmpty 测试Application变量是否存在

  26、ASP中禁用的VBScript语句
  在服务器上使用VBScript和ASP时,将禁用两个VBScript特性。因为使用ActiveServerPages编写的脚本在服务器上执行,所以不支持用来提供用户界面元素的VBScript语句InputBox和MsgBox。另外,不要在服务器端脚本中使用VBScript函数CreateObject和GetObject。而应使用Server.CreateObject,以便ASP可以跟踪对象例程。由CreateObject语句或GetObject语句创建的对象既不能访问ASP内建的对象,也不能参与事务。

  27、在一个.asp文件中处理各种事件
  如客户登陆界面、客户聊天界面等。客户第一次请求.asp文件时,采用的是简单的HTTP GET方式,但是当客户向页面上表单字段中增加数据并向自身提交表单后,.asp文件会再次被请求,不过这次数据是经过HTTP POST方式进行传递的。文件被请求的方式可以用两种方法来确定。一是测试Request.Form集合是否包含成员,若没有,则表明没有发送给表单处理的数据。二是使用Request.ServerVariables("Request_Method")变量。如果表单是通过HTTP GET方式被请求的,则这个变量会返回“GET”,如果表单被提交处理则返回“POST”。后一种方法对于确定文件的请求方式更直接。

  28、安全相关
  将.asp文件存放的目录设置为不可读(ASP仍能执行),不过这样设置以后html、css等文件就不能放在这个目录下了(它们将不能被浏览)。
  尽量将web目录建在NTFS分区上,目录不要设定everyone full control,即使是是管理员组的成员一般也没什么必要完全控制,只要有读取、更改权限就足够了。

  29、关于数据库连接、打开和读取
  数据库标准连接:
  <%
  connstr="DBQ="+server.mappath("database/source.mdb")+";
  DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};
  DriverId=25;FIL=MSAccess;
  ImplicitCommitSync=Yes;
  MaxBufferSize=512;
  MaxScanRows=8;
  PageTimeout=20;
  SafeTransactions=0;
  Threads=3;
  UserCommitSync=Yes;"
  %>
  SQL连接方式:
  dim conn 
  set conn=server.createobject("ADODB.connection") 
  conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=服务器;UID=用户名;PWD=密码;DATABASE=表名;"
  access连接方式:
  dim conn
  dim connstr
  on error resume next
  connstr="DBQ="+server.mappath("数据库路径")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
  set conn=server.createobject("ADODB.CONNECTION")
  conn.open connstr
  流程:①设置驱动和数据库的路径;②创建Connection对象;③利用连接对象Conn的open方法打开一个指定的数据库。
  连接数据库可以使用驱动程序,也可以使用数据源。使用驱动程序方便、简单。适用.mdb的驱动程序有Microsoft.Jet.OLEDB.4.0和MicrosoftAccessDriver。
  数据库连接字符串"Driver={Microsoft Access Driver (*.mdb)};DBQ="Server.MapPath("user.mdb"),其中Driver和(*.mdb)必须有一个空格,否则就会出错。
  举例:
  <%
  Dim lj
  '数据库驱动/路径/名称,有的在Microsoft前加上Providr=
  lj="Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(*.mdb)
  set conn=Server.CreateObject("ADODB.Connection")
  conn.Open lj
  %>        '这段代码可放在<html>标记前
  <%
  '创建Recordset对象
  set rs=Server.CreateObject("ADODB.Recordset")
  '打开数据库表三各方法(一般读取1,1 更新1,3)
  1、RS.Open "select * from 数据库表名",conn,1,1
  2、SQL = "Select * From 数据表 Where ID=" & request("ID")
    RS.Open SQL,conn,1,1
  3、RS.Open "数据表",conn,1,1
  %>        '这段代码可放在<body>标记前
  <%
  if rs.EOF and rs.BOF then  '判断语句,记录集为空
  response.write("暂时还没有数据")
  else
  '读取表中全部记录。如只需读取部分记录,将do循环改成for循环即可。
  Do Until rs.EOF
  response.write("编号:" & rs("bh")
  ……
  response.write("<hr>")
  rs.MoveNext
  Loop
  end if
  %>
  <%
  rs.close
  set bb=Nothing
  %>
  如果用表格读取,则格式:<td>编号:<%=rs("bh")%></td>
  读取数据库数据的方面
  1、<%=RS(0).name%> '读取第一栏的表头名称
  2、<%=RS(1).value%> '读取第二栏的里的内容
  3、<%=Rs.Fields(1).Value%> '同上
  4、Rs.recordcount '总记录数
  5、Rs.fields.Count '有几个栏位
  记录集读取举例:
  if rs.recordcount>0 then 如果有记录
  response.write "User_id User_name<br>"
  for i=1 to rs.recordcount 循环读取所有记录
  response.write rs("id")&" "&rs("user_name")&"<br>" 向浏览器输出记录字段
  rs.movenext 指针下移一行
  if rs.eof then exit for 如果到达记录集底部则退出循环
  next
  end if
  %>

  30、BrowserCap对象的Cookie属性
  
判断客户端浏览器是否支持Cookie,并返回信息。
  <%
  Sub checkCookie()
  Set BrowserCap=Server.CreateObject("MSWC.BrowserType")
  if BrowserCap.Cookie=True then
  response.write "你的浏览器支持 Cookie!"
  else
  response.write "对不起,你所使用的浏览器不支持 Cookie!"
  end if
  end Sub
  %>

  31、ASP页面的加载语句
  <!--#include file="conn.asp"-->或<!--#include virtual="conn.asp"-->,前一名包含文件的相对路径,后一句包含文件的虚拟路径。
  在同一个虚拟目录内,二者的效果相同。但假设虚拟目录名为myweb,则后一种方法,即<!--#include virtual="myweb/file.asp"-->可以通过调试,前一种方法<!--#include file="myweb/file.asp"-->则绝对要报错。
  32、本页文件名及路径
  <%=request.servervariables("path_info")%>
  33、Recordset对象的EOF与BOF方法
  使用 BOF 与 EOF 属性,可以得知一个 Recordset 对象是否包含有记录或者得知移动记录行是否已经超出该 Recordset 对象的范围。如:
  if rs.eof and rs.bof then
  执行条件
  end if

  若当前记录的位置是在一个 Recordset 对象第一行记录之前时, BOF 属性返回 true,反之则返回 false。
  若当前记录的位置是在一个 Recordset 对象最后一行记录之后时, EOF 属性返回 true,反之则返回 false。
  BOF 与 EOF 都为 False:表示指标位于 RecordSet 的当中。
  BOF 为 True:目前指标指到 RecordSet 的第一笔记录。 EOF 为 True:目前指标指到 RecordSet 的最后一笔记录。
  BOF 与 EOF 都为 True:在 RecordSet 里没有任何记录。
  rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
  rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
  34、not (rs.eof or rs.bof)、not rs.eof、not rs.bof区别与举例
  if not (rs.eof or rs.bof) then 判断记录集rs中是否有记录(不为空),有则执行后面的语句。
  if not rs.eof then ’如果有此记录的话,执行后面的语句
  do while not rs.eof 从头到尾依次读出数据库中的每一条记录并显示到客户端浏览器。not rs.eof的意思是条件为没有读到记录集的最后。
  do while not rs.bof 从尾到头依次读出数据库中的每一条记录并显示到客户端浏览器。
  举例一:
  <%
  set rs=server.createobject(adodb.recordset) '建立recordset对象
  sqlstr="select * from table" 'table为要显示的数据所存放的数据表
  rs.open sqlstr,conn,1,3 '表示打开数据库及打开的方式
  rs.movefirst '将指针移到第一条记录
  while not rs.eof '判断指针是否到末尾
  response.write(rs(name)) '显示数据表table中的name字段
  rs.movenext '将指针移动到下一条记录
  wend '循环结束
  rs.close '以下几句是用来关闭数据库和释放内存
  conn.close 
  set rs=nothing
  set conn=nothing
  %>
  举例二、
  strno=request.form("bookno")
  strau=request.form("author")
  set adocon=server.createobject("adodb.connection")
  adocon.open "Driver={Microsoft Access Driver(*.mdb)};DBQ=" & _
Server.Mappath=("/cancer/cancer.mdb")
  strsql="select * from book where bookno='"&strno&"'"
  set rs=server.createobject("adodb.recordset")
  rs.open strsql,adconn,1,3
  if not rs.eof then ’如果有此记录的话
  rs("author").value=strau '将变量strau里的内容“送”到数据库author记录里
  rs.update '保存数据库记录
  end if
  rs.close
  set rs=nothing
  adocon.close
  set adocon=nothing
  35、Recordset对象的Addnew、Update方法
  rs.addnew 添加记录到数据表末端
  rs.update 更新数据表记录。如:
  rs.addnew
  rs("field1").value=value1
  rs("field2").value=value2
  ……
  rs.update
  
注意:一定要注意字段的类型(尤其是日期型)一致,否则出错的几率非常高。
  36、Recordset对象的其它方法
  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.delete 删除当前记录,但记录指针不会向下移动
  37、Connection对象的Execute方法
  执行一个查询,返回一个记录集。用Execute方法查询数据库提取的信息往往是一个二维表格,它与RecordSet对象的形式一样。因此,为了更好地应用查询结果,经常把查询结果建立成一个RecordSet对象(的引用),例如:
  Set rs = Conn.Execute “SELECT * FROM Mytable”
  查询已经连接和打开的数据库,在表"Mytable”中提取所有字段所有记录,以此建立名为rs的RecordSet对象的实例。接下去就可以应用RecordSet对象的各种方法进行操作。
  38、Server.MapPath(path)
  ①Server.MapPath("/") 应用程序根目录所在的位置,如 C:\Inetpub\wwwroot\
  ②Server.MapPath("./") 表示所在页面的当前目录。
  注:等价于Server.MapPath("") 返回 Server.MapPath("")所在页面的物理文件路径
  ③Server.MapPath("../")表示上一级目录
  ④Server.MapPath("~/")表示当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置。如:C:\Inetpub\wwwroot\Example\
  注:等效于Server.MapPath("~")。
  39、FileSystem和TextStream对象
  FileSystem和TextStream对象可用于建立对文件系统的访问,并提供顺序访问文件的机制。FileSystem没有属性,只有两个方法,第一个方法是CreateTextFile方法,可以在宿主机上创建新的文本文件,并返回TextStream对象以提供对新创建文件的访问机制。第二个是OpenTextFile方法,用于打开文本文件供顺序访问并返回一个TextStream对象。如:
  <%
  set fsFilesys=CreateObject("Scripting.FileSystemObject")
  set tsCoffee=fsFilesys.CreateTextFile("c:\coffe.txt",True)
  tsCoffee.WriteLine("Man,I Could use some coffee.")
  tsCoffee.Close
  %>
  TextStream对象的使用有:
  AtEndOfLine:如果文件当前字符处在行的末尾则返回true
  AtEndOfScreen:如果当前字符在文件的末尾则返回true
  Column:返回当前字符的列号
  Line:返回当前字符的行号
  TextStream对象的方法为:
  Close:关闭并释放TextStream对象
  Read:从一个文件中读取给定个数的字符到一个变量中
  ReadAll:读取文件的全部内容到一个变量中
  ReadLine:读取给定行号的内容到一个变量中
  Skip:跳过给定个数的字符
  SkipLine:跳过给顶的行书
  Write:写如字符串
  WriteLine:写入以换行结束的字符串
  WriteBlankLines:写入给顶数量的空格
  40、TRIM函数
  利用Trim函数可以将字符串两头空格全部去除,相应的语句为:strStartPort=TRIM(Request.Form("catmenu_0"))

  41、end if可以省略的情况
  if...then...放在一行的时候end if可以省略。如:
  if page<=0 then page=1
  if request.QueryString("page")="" then page=1
 这句话的作用是分页打开页面的时候没有跟随page变量,自动设置为page=1,防止出错。
  42、关于分页的语句
  下一页的链接可以设置为list.asp?page=<%=page+1%>,上一页的链接设置为list.asp?page=<%=page-1%>,rs.absolutepage(当前页面)为第page页。
  if page=1 and not page=pagecount 这个时候没有上一页,但是有下一页
  elseif page=pagecount and not page=1 这个时候没有下一页,但是有上一页
  elseif page<1 这个时候没有任何记录
  elseif page>pagecount then 这个时候没有任何记录
  elseif page=1 and page=pagecount 这个时候没有上一页,没有下一页
  else 这个时候有上一页,也有下一页
  <%for i=1 to pagecount%><a href="list.asp?page=<%=i%>"><%=i%></a>
  <%next%>
  43、两种创建recordset的方法
  Dim objRec
  Set objRec = Server.CreateObject ("ADODB.Recordset")
  objRec.Open "customers", objConn, 0, 1, 2

  'customers表示打开数据库内一个数据表的名字.
  Dim objRec
  Set objRec = Server.CreateObject ("ADODB.Recordset")
  objRec.Open SQL, objConn, 0, 1, 2

  '这里唯一的修改就是在objRec.Open,之后用包含SQL语句的变量代替了要查询的数据表的名称。
  Dim objRec
  set objRec = objConn.Execute(SQL)

  'Execute代码“运行”SQL语句(或者说对数据库进行查询),选取数据并把数据存放在变量objRec中。
  青色代码块方法的优点之一是你可以指定游标类型(如以上0, 1 ,2 所示)。蓝色代码块方法的优点是简练,缺点是你不能选择自己想采用的游标类型,recordset总是用前向游标打开。
  44、<script>标记在ASP中的应用
  <html>
  <body>
  <% call function1 %>
  </body>
  </html>
  <script runat=server language=JavaScript>
  function function1()
  {
  ……
  }
  </script>
  45、gobal.asa文件的结构
  <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
  Sub Session_OnStart
  End Sub
  Sub Session_OnEnd
  End Sub
  sub Application_OnStard
  End Sub
  sub Application_OnEnd
  End Sub
  </SCRIPT>
  46、显式声明变量语句
  <% Option Explicit %> 位于任何ASP命令、任何HTML文本或脚本命令之前。
  有必要养成显式声明所有变量的习惯。这一点当使用“#include”语句在 .asp 文件中包含其他文件时尤其重要。被包含的脚本虽然在单独的文件中,但却当作是包含文件的一部分。除非声明变量,否则很容易忘记必须在主脚本和被包含脚本中使用不同的变量名。
  47、打开存取数据库记录集模的式
  rs.open strSQL,conn,1,1
  其中的strSQL是操作数据库的SQL语句;conn是联接数据库的Connection 变量。
  48、 Recordset对象open方法的参数
  recordset.Open Source,ActiveConnection,CursorType,LockType,Options
  Source:可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。
  ActiveConnection:指定当前的连接,可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。
  CursorType: 0 缺省值,启动一个只能向前移动的游标;1 启动一个Keyset类型的游标:2 启动一个Dynamic类型的游标;3 启动一个Static类型的游标。
  LockType:1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法;2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性;3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作;4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、删、改的操作
  Options:adCmdTable/adCmdText,可选参数。若第一个参数为表名,则第五个参数使用adCmdTable;若第一个参数为SQL语句,则该参数为adCmdText。
  49、获得本页url的request.servervariables("")集合
<%
Response.Write "<TABLE border=1><!-- Table Header --><TR><TD><B>Variables</B></TD><TD><B>value</B></TD></TR>"
for each ob in Request.ServerVariables
Response.Write "<TR><TD>"&ob&"</TD><TD>"&Request.ServerVariables(ob)&"</TD></TR>"
next
Response.Write "</TABLE>"
%>
  50、ASP中过滤双引号
  <%replace(过滤字符,"""","")%>
  chr(34)表示双引号,chr(39)表示单引号

  51、获得服务端信息
  获得客户端IP<%=request.servervariables("remote_addr")%>
  服务器名<%=Request.ServerVariables("SERVER_NAME")%>
  服务器IP<%=Request.ServerVariables("LOCAL_ADDR")%>
  服务器端口<%=Request.ServerVariables("SERVER_PORT")%>
  服务器时间<%=now%>
  IIS版本<%=Request.ServerVariables("SERVER_SOFTWARE")%>
  脚本超时时间<%=Server.ScriptTimeout%>
  本文件路径<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
  服务器CPU数量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
  服务器解译引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>
  服务器操作系统<%=Request.ServerVariables("OS")%>
  52、各种表单<form>的输入类型
  ①文本框:TYPE="TEXT"
  ②单选钮:TYPE="RADIO"
  ③复选钮:TYPE="CHECKBOX"
  ④密码框:TYPE=" PASSWORD "
  ⑤提交和重置按钮:TYPE="SUBMIT"、TYPE="RESET"
  ⑥按钮元件:TYPE="BUTTON"
  ⑦文本区域:<TEXTAREA NAME="…" COLS="…" ROWS="…"></TEXTAREA>
  ⑧下拉列表框:
  <SELECT NAME="LIKE">
  <OPTION VALUE="非常喜欢">非常喜欢
  <OPTION VALUE="还算喜欢">还算喜欢
  <OPTION VALUE="不太喜欢">不太喜欢
  <OPTION VALUE="非常讨厌">非常讨厌
  </SELECT>
  各种表单类型的属性一般有:NAME="名称"、SIZE="数值"、VALUE="预设内容"、ALIGN="对齐方式"以及可输入的最大值、预设值等。
  53、输出一个换行符号
  response.write chr(10) 等同response.write "<br>"
  54、with response的用法
  <%
  with response
  .write "with response"
  .write "的"
  .write "用"
  .write "法"
  end with
  %>
  55、replace在ASP中的作用
  若要把字符串s'd'''sl里面的 ' 转化为A,则:string1=replace(string1,"'","A")
  现在字符串的值就变为:sAdAAAsl
  56、<!--#include file="*.asp"-->
  include file可放在网页的任意位置,但必须位于所有ASP代码块的外部。
  类似的功能代码:
  <iframe src="*.asp" frameborder=0 scrolling=no width="100" height="100"></iframe>
  57、数据库字符串连接时要注意:
  microsoft access driver和括号 ( 之间有一个空格。
  58、打开和关闭FSO权限
  regsvr32.exe scrrun.dll 关闭FSO权限,在上述命令中加/u参数
  运行ASP程序,如分区是NTFS,还必须使Everyone 加上完全控制的权限。