Asp编码优化技巧(2)

5、使用case进行条件选择
    在进行条件选择的时候,尽量使用case语句,避免使用if语句。使用case语句,可以使程序流程化,执行起来也比if语句来的快。示例如下:

<% 
   FOR i = 1 TO 1000 
   n = i 
   Response.Write AddSuffix(n) & "<br>" 
   NEXT 
   %> 
   <% 
   Function AddSuffix(num) 
numpart = RIGHT(num,1) 
SELECT CASE numpart 
CASE "1" 
IF InStr(num,"11") THEN 
num = num & "th" 
ELSE 
num = num & "st" 
END IF 
CASE "2" 
IF InStr(num,"12") THEN 
num = num & "th" 
ELSE 
num = num & "nd" 
END IF 
CASE "3" 
IF InStr(num,"13") THEN 
num = num & "th" 
ELSE 
num = num & "rd" 
END IF 
CASE "4" 
num = num & "th" 
CASE ELSE 
num = num & "th" 
END SELECT 
AddSuffix = num 
   END FUNCTION 
%> 

6、使用adovbs.inc文件中定义的常量打开记录集 
    打开记录集时,可以定义记录集打开的游标类型和锁定类型。在adovbs.inc文件中定义了一些常量来定义这些类型。adovbs.inc文件保存在\inetpub\iissamples\IISamples目录下面。下面列举几个常用的游标类型和锁定类型。
游标类型:adOpenFowardOnly游标只能向前;adOpenKeyset游标可向前或者向后,如一用户添加记录,新记录不会出现在记录集中;adOpenDynamic游标动态随意;adOpenStatic记录集不对其他用户造成的记录修改有所反映。
锁定类型:adLockReadOney不能修改记录集中的记录;adLockPessimistic在编辑一条记录时锁定它;adLockOptimstic调用记录集Update方法时才锁定记录;adLockBatchOpeimstic记录只能成批更新。

<!--#INCLUDE VIRTUAL="/ADOVBS.INC" --> 
<% 
connectme="DSN=xur;uid=xur;pwd=xur" 
sqltemp="select * from publishers where name='xur'" 
set rstemp=Server.CreateObject("adodb.Recordset") 
rstemp.open sqltemp, connectme, adOpenStatic,adLockOptimstic 
response.write rstemp.recordcount & " records in<br>" & sqltemp 
rstemp.close 
set rstemp=nothing 
%> 

7、避免在使用global.asa文件中进行对象定义 
    由于global.asa文件中的内容可以为站点内所有文件引用,无疑,在global.asa文件中进行对象定义可以省去很多重复工作。比如在global.asa中的application_onstart函数中进行如下定义:

<%SUB application_onstart 
set application("theCONN")=server.createobject("adodb.connection") 
END SUB %>; 

这样就可以在站点任何代码中做类似引用:

<% 
mySQL="select * from publishers where state='xur' 
set rstemp=application("theconn").execute(mySQL) 
%> 

同样地,可以在session_onstart函数中创建记录集对象