选择显示字体大小

asp开发技巧三则

     一、 服务器端文件的动态包含注一
  在asp开发过程中,我们经常会将通用的函数制作成一个独立的asp文件,然后通过include方法引入需要的页面。由于在执行过程中,服务器会首先运行采用include方法包含的文件,然后才是当前页面的代码,所以,在实际执行过程中我们不可能使用include方法来实现服务器端的动态包含。
  看下面一段代码:
  <%
  i=1
  str = "file" & i & "/a.asp"
  %>
  <!--#include virtual ="<% str %>"-->
  我们的本意是希望根据i的不同取值,包含不同目录下的同名文件,可是在执行过程中,却会返回“找不到包含文件 '<% str %>'。”的错误。也就是说在asp中,我们不可能使用include方法实现文件的动态包含。
  要在asp中实现真正的动态文件包含,目前可行的方法是使用server.execute命令。server.execute是asp3.0新增的一个控制程序流的新方法,可以在运行过程中临时转移到一个文件、执行其内容,然后再返回原先的程序。
  使用server.execute命令重新书写的代码如下:
  <%
  i=1
  str = "file" & i & "/a.asp"
  server.execute str
  %>
  注一:本文讨论的文件动态包含,主要指包含文件为变量的情况,有别于被包含的文件名事先确定的情况。
  
  二、 数据库记录的批量删除
  在用asp开发管理程序中,会不可避免地涉及删除数据库记录的操作。一般我们会采用下面两种方法删除记录:使用recordset.delete方法或者直接使用sql语句“delete from 数据表 where 主键=值”。而本文将要介绍的这种方法则可以同时删除一条或多条记录。下面我们首先来看一个具体的例子,在这个例子中我们会用到一张数据表(subject)和两个asp文件(list.asp和code.asp),该数据表包含了两个字段:
  id、数据表主键,用来唯一标示数据库中的记录;
  title:标题,用来显示记录的内容。
  两个asp文件的内容如下:
  list.asp
  <%@ language=vbscript %>
  <%
  
   '创建数据库连接
   dim objconn
   set objconn = server.createobject("adodb.connection")
   objconn.open"provider=microsoft.jet.oledb.4.0;data source=d:\samples\tooltips.mdb"
  
   '创建记录集
   dim objrs
   set objrs = server.createobject("adodb.recordset")
   objrs.open "subject", objconn
  
   '显示记录列表
   response.write "<form method=post action=""code.asp"">"
   response.write "<table border=1 cellspacing=1>"
  
   response.write "<tr>"
   response.write "<th>删除</th>"
   response.write "<th>标题</th>"
   response.write "</tr>"
  
   do while not objrs.eof
   response.write "<tr>"
   response.write "<td><input type=checkbox name=delete "
   response.write "value=" & cint(objrs("id")) & "></td>"
   response.write "<td>" & objrs("title") & "</td>"
   response.write "</td></tr>"
   objrs.movenext
   loop
  
   response.write "</table>"
   response.write "<p><input type=submit value=""删除"">"
   response.write "</form>"
  
   ‘关闭ado对象
   objrs.close
   set objrs = nothing
  
   objconn.close
   set objconn = nothing
  %>
  code.asp
  <%@ language=vbscript %>
  <%
  
   '获取删除的记录列表
   dim strdeletelist
   strdeletelist = request.form ("delete")
  
  
   '创建一个连接对象
   dim objconn
   set objconn = server.createobject("adodb.connection")
   objconn.open"provider=microsoft.jet.oledb.4.0;data source=d:\samples\tooltips.mdb"
  
   '生成删除记录的sql语句
   dim strsql
   strsql = "delete from subject where id in (" & strdeletelist & ")"
  
   ‘执行删除操作
   objconn.execute strsql
  
   '关闭连接对象
   objconn.close
   set objconn = nothing
  %>
  从上面的代码可以看到,我们首先在list.asp页面中生成一个记录列表,每条记录前面都包含了一个checkbox,这些checkbox都使用了同一个名称,每个checkbox的取值对应数据表中的唯一记录,由于在asp中,如果一个表单上包含多个相同命名的控件,会返回一个以“,”分隔的字符串,所以,在code.asp文件中,我们首先取得所有checkbox对应的取值,然后利用一个sql语句“delete from subject where id in (str)”完成记录的删除。其中的关键就在于“delete from tablenamewhere tableid in (string)”这个sql语句。由于该sql语句对于string没有特殊的要求,所以我们既可以删除一条记录,也可以同时删除多条记录。
  这里还需要说明一点,如果数据表中作为的字段类型为字符型,则需要按下面的形式进行修改
  ……
  strdeletelist = replace(strdeletelist,”,”,”’,’”)
  strsql = "delete from subject where id in (‘" & strdeletelist & "’)"
  ……
  
  三、 用metadata标记包含外部常量
  如果我们要在asp程序中使用ado事先定义的常量,那么必须在每个用到ado常量的页面上包含“adovbs.inc”,否则就只能直接用数字表示。显然,直接数字并不利于今后程序的修改,而且可以规范化开发需要极力避免的事情,但是每个页面都包含“adovbs.inc”,又烦琐了一点。所以,下面介绍另外一种一次包含的方法。这就是global.asa中的typelibrary declarations。
  由于一般的com对象都会将常量定义包含在类型库中,所以利用typelibrary declarations可以直接读取这些类型库中定义好的常量。加上typelibrary declarations只要在global.asa中一次定义就可以在所有的asp页面中使用,效率明显高于单个页面包含。
  typelibrary declarations的语法形式为:
  <!--metadata
  type="typelib"
  file="file"
  uuid="typelibraryuuid"
  -->
  其中,file和uuid两个属性只要任选一个即可。file属性指指向包含常量定义的完整文件路径,而uuid则指外部库的guid。
  例如我们包含在asp程序中使用ado常量,则可以采用下面两种方式:
  <!—metadata
   type =”typelib”
   file = “c:\program files\common files\system\ado\msado21.tlb”
  -->
  或者
  <!—metadata
   type =”typelib”
   uuid = “00000201-0000-0010-8000-00aa006d2ea4”
  -->
  相信大家看了上面两种方法,会很自然的选择第一种。的确,利用物理目录的方式明显比后一种方法方便,但是如果开发的asp程序需要到其它机器上安装,那么采用第二种方法会更好一点。为了方便大家,下面列出了asp中一些常用的guid
  名称
  guid
  ado2.1
  {00000201-0000-0010-8000-00aa006d2ea4}
  ado2.5
  {00000205-0000-0010-8000-00aa006d2ea4}
  ado2.6
  {00000206-0000-0010-8000-00aa006d2ea4}
  ado2.7
  {00000300-0000-0010-8000-00aa006d2ea4}
  filesystemobject
  {420b2830-e718-11cf-893d-00a0c9054228}
  
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons