社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 4257阅读
  • 0回复

ASP编程中20个非常有用的例子

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

1.如何用Asp判断你的网站的虚拟物理路径 4s%zvRu  
答:使用Mappath方法 T}?b,hNl$  
< p align="center" >< font size="4" face="Arial" >< b > &X~8S/nPAw  
The Physical path to this virtual website is: Xsanc@w)^C  
< /b >< /font > I _Lm[  
< font color="#FF0000" size="6" face="Arial" > :/SGB3gb1t  
< %= Server.MapPath("\")% > xv147"w'v  
< /font >< /p > I8@leT\9M  
2.我如何知道使用者所用的浏览器? '-f` 5X  
答:使用the Request object方法 _&gO>G,uy  
strBrowser=Request.ServerVariables("HTTP_USER_AGENT") {I0!q"sF  
If Instr(strBrowser,"MSIE") < > 0 Then &.2% p  
  Response.redirect("ForMSIEOnly.htm") 5G'2 Wby'#  
Else #+Bz$CO  
  Response.redirect("ForAll.htm") }+`,AC`RM  
End If %LHt{:9.  
njJTEUd">  
3.如何计算每天的平均反复访问人数 ,@ p4HN*  
答:解决方法 7~1Fy{tc  
< % startdate=DateDiff("d",Now,"01/01/1990") CaED(0  
if strdate< 0 then startdate=startdate*-1 89 m.,  
avgvpd=Int((usercnt)/startdate) % > Z3wdk6%:}  
显示结果 ^FNju/b  
< % response.write(avgvpd) % > lUq `t K8  
that is it.this page have been viewed since November 10,1998 Y cL((6A  
IY!.j5q8  
4.如何显示随机图象 "UY34a^I  
< % dim p,ppic,dpic 3zfpFgD!  
ppic=12 Lf a&JKd  
randomize p;o"i_!  
p=Int((ppic*rnd)+1) =s:kC`O  
dpic="graphix/randompics/"&p&".gif" e)-$ #qW  
% > [-W~o.`  
显示 hB>FJZQ_  
< img src="< %=dpic% >" > s H'FqV,)  
8* m,#   
5.如何回到先前的页面 z\, lPwB2  
答:< a href="< %=request.serverVariables("Http_REFERER")% >" >preivous page< /a > O['[_1n_u]  
或用图片如:< img src="arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" > oMM@{Jp  
suaP'0  
6.如何确定对方的IP地址 sT iFh"8d>  
答:< %=Request.serverVariables("REMOTE_ADDR)% > h0 %M+g  
.8'uIA{_2  
7.如何链结到一副图片上 32j#kJW  
答:< % @Languages=vbscript % > 9ec#'i=  
< % response.expires=0 753gcY#i  
strimagename="graphix/errors/erroriamge.gif" .3XSF$;  
response.redirect(strimagename) 07(LLhk@d  
% > Wo9=cYC)  
ia.+<, $`S  
8.强迫输入密码对话框 YGyw^$.w  
答:把这句话放载页面的开头 -`spu)  
< % response.status="401 not Authorized" fK(:vwh  
response.end j)Q}5M  
% > * >NML]#0  
{=!BzNMj  
9.如何传递变量从一页到另一页 ^^uY)AL  
答:用 HIDDEN 类型来传递变量 6 P(jc  
< % form method="post" action="mynextpage.asp" > ) .V,zmI  
< % for each item in request.form % > X?r$o>db  
< input namee="< %=item% >" type="HIDDEN" e&(Wn2)o  
value="< %=server.HTMLEncode(Request.form(item)) % >" > KF#qz2S  
< % next % > MdkL_YP}.  
< /form > \q!TI x  
WqCER^~'>  
10.为何我在 asp 程序内使用 msgbox,程序出错说没有权限 pK>/c>de  
答:由于 asp 是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你 (:) 呵呵) 没有权限。但是ASP和客户端脚本结合倒可以显示一个对话框,as follows: ~S :8M<aB  
<%yourVar="测试对话框"%> ]5j>O^c<  
<script language='javascript'> }HbUB$5  
alert("<%=yourvar%>") ]w-W  
</script> +-V4:@  
mMu+MXTk<  
11.有没有办法保护自己的源代码,不给人看到 IK4(r /  
答:可以去下载一个微软的Windows Script Encoder,它可以对asp的脚本和客户端javascript/vbscript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装一个ie5就有了)才能执行。 F2n4#b  
t > 64^nS  
12.怎样才能将 query string 从一个 asp 文件传送到另一个? #w^Ot*{!N  
答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING")) *r~6R  
"Rf|o 6!d  
13.global.asa文件总是不起作用? :< ]sJf N  
答:只有web目录设置为web application, global.asa才有效,并且一个web application的根目录下 global.asa才有效。IIS4可以使用Internet Service Manager设置application setting 怎样才能使得htm文件如同asp文件一样可以执行脚本代码? u1z!OofN>  
i3(5 '  
14.怎样才能使得htm文件如同asp文件一样可以执行脚本代码? Z]Z&PbP  
答:Internet Sevices Manager - > 选择default web site - >右鼠键- >菜单属性-〉主目录- > 应用程序设置(Application Setting)- > 点击按钮 "配置"- > app mapping - >点击按钮"Add" - > executable browse选择 \WINNT\SYSTEM32\INETSRV\ASP.DLL EXTENSION 输入 htm method exclusions 输入PUT.DELETE 全部确定即可。但是值得注意的是这样对htm也要由asp.dll处理,效率将降低。 \`/ P*  
fgo3Gy*#  
15.如何注册组件 t B}W )Eb  
答:有两种方法。 Ms%C:KG  
第一种方法:手工注册 DLL 这种方法从IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令行方式下来执行,进入到包含有DLL的目录,并输入:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它会把dll的特定信息注册入服务器中的注册表中。然后这个组件就可以在服务器上使用了,但是这个方法有一个缺陷。当使用这种方法注册完毕组件后,该组件必须要相应的设置NT的匿名帐号有权限执行这个dll。特别是一些组件需要读取注册表,所以,这个注册组件的方法仅仅是使用在服务器上没有MTS的情况下,要取消注册这个dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll %f&Bt,xEo  
^s=F<_{  
第二种方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改进。MTS允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在MTS上注册组件的步骤如下: yRhD<*  
1) 打开IIS管理控制台。 5ry[Lgg  
2) 展开transaction server,右键单击"pkgs installed"然后选择"new package"。 {pRa%DF  
3) 单击"create an empty package"。 c~\^C_  
4) 给该包命名。 [>Zg6q|  
5) 指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator 登陆的话)。 $['`H)z  
6) 现在使用右键单击你刚建立的那个包下面展开后的"components"。选择 "new then component"。 %N7G>_+  
7) 选择 "install new component" 。 ady SwB  
8) 找到你的.dll文件然后选择next到完成。 &MrG ,/  
要删除这个对象,只要选择它的图标,然后选择delete。 #aP;a-Q|k  
附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。 #7J3,EV  
!;k ^  
16. ASP与Access数据库连接: [[4!b E  
3)^ 2X  
<%@ language=VBscript%> 0J5$ Yw1'F  
<% %~Ymb&ugg  
dim conn,mdbfile Cq\{\!6[  
mdbfile=server.mappath("数据库名称.mdb") kZ^wc .  
set conn=server.createobject("adodb.connection") UG]5Dxk  
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile PDh!B _+  
[S.zWPX9{  
%> bGj<Dojl  
?U*sH2F  
17. ASP与SQL数据库连接: ufA0H J)Yg  
7Z81+I|&8  
<%@ language=VBscript%> G1,u{d-_  
<% |;C;d"JC2  
dim conn THwq~c'  
set conn=server.createobject("ADODB.connection") PXDJ[Oj7(0  
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称 ,;=is.h9  
%> <z wI@i  
 <j_  
建立记录集对象: gX5.u9%C\  
[s-!t E3-  
set rs=server.createobject("adodb.recordset") {]y!2r  
rs.open SQL语句,conn,3,2 #vcQ =%;O  
SR/ "{\C  
s*>B"#En  
18. SQL常用命令使用方法: DK%@ [D  
bde6 ;=oM  
(1) 数据记录筛选: _[hVGCSB  
)Z`OkkabnD  
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" O;#0Yg  
"[ >ql1t{b  
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" Op iVQr:  
H]0(GLvH  
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"  ixF  
0n)UvJ  
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" lR]SGdY  
7<F{a"5P  
sql="select * from 数据表 where 字段名 between 值1 and 值2" f[$Z<:D-ve  
WTC/mcS  
(2) 更新数据记录: *&F~<HC2+  
73E[O5?b  
sql="update 数据表 set 字段名=字段值 where 条件表达式" t(- 5l  
pH?"@  
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" vqwSOh|P9  
#X<s_.7DJ  
(3) 删除数据记录: )-LS n  
ZV:0:k.x  
sql="delete from 数据表 where 条件表达式" 9q<?xO  
pH.&OW%  
sql="delete from 数据表" (将数据表所有记录删除) be&,V_F  
p-%m/d?  
(4) 添加数据记录: ]. ^e[v6  
'n!Sco)C  
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" _ 3jY,*  
!*B1Eo--cN  
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) #xxs^Kbqa#  
sHMZ'9b  
(5) 数据记录统计函数: |uln<nM9  
H:L<gv(rG  
AVG(字段名) 得出一个表格栏平均值 =q*j". <  
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 v6KF0mqA&  
MAX(字段名) 取得一个表格栏最大的值 \;Q:a /ur9  
MIN(字段名) 取得一个表格栏最小的值 #mcGT\tQ  
SUM(字段名) 把数据栏的值相加 q6N6QI8/  
0$q)uip  
引用以上函数的方法: Yg3emn|a  
m[?gN&%nc  
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" Vg? 1&8>  
set rs=conn.excute(sql) f!##R-A  
8>V)SAI'  
用 rs("别名") 获取统的计值,其它函数运用同上。 ^$F1U,oi  
C%kIxa)  
(5) 数据表的建立和删除: |1"n\4$  
{o.i\"x;  
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) +# tmsv]2  
VH$hQPP5d  
例:CREATE TABLE tab01(name varchar(50),datetime default now()) ]s:%joj%^  
#vvQ 1ub  
DROP TABLE 数据表名称 (永久性删除一个数据表) ;*8,PV0b_<  
mA']*)L1  
19. 记录集对象的方法: I>3]VR i  
Z"'tJ3Y.~  
rs.movenext 将记录指针从当前的位置向下移一行 S9S%7pE  
rs.moveprevious 将记录指针从当前的位置向上移一行 xy1R_*.F^T  
rs.movefirst 将记录指针移到数据表第一行 y[sO0u\  
rs.movelast 将记录指针移到数据表最后一行 8Ir = @  
rs.absoluteposition=N 将记录指针移到数据表第N行 [cf!%3>53  
rs.absolutepage=N 将记录指针移到第N页的第一行 $"]*,=-X  
rs.pagesize=N 设置每页为N条记录 AtW<e;!0te  
rs.pagecount 根据 pagesize 的设置返回总页数 W%^;:YQ9i  
rs.recordcount 返回记录总数 :/'oh]T|  
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否 +HNM$yp  
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否 $/;;}|hqi  
rs.delete 删除当前记录,但记录指针不会向下移动 XfH[: XG3  
rs.addnew 添加记录到数据表末端 d,caOE8N  
rs.update 更新数据表记录 dgM@|&9*m  
4z>SI\Ss  
--------------------------------------- _+2Jc}Yf  
H{j jA+0  
20 Recordset对象方法 E?[]N[0Kl  
`%S#XJU  
Open方法 %w3"B,k'9D  
c0u1L@tj  
recordset.Open Source,ActiveConnection,CursorType,LockType,Options "AUHe6Yv  
xnD"LK  
Source 2uM\?*T@  
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。 "Z*u2_ H  
/p_#8}Uh  
ActiveConnection E*X-f"  
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 U/3 <p8  
El#"vIg(\  
CursorType 3Ja1|;(2  
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下: dw]jF=u  
-------------------------------------------------------------- %T'<vw0  
常数 常数值 说明 Z. G<'  
------------------------------------------------------------- wxSJ  
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。 2h5L#\H"  
adOpenKeyset 1 启动一个Keyset类型的游标。 Doc_rQYku  
adOpenDynamic 2 启动一个Dynamic类型的游标。 e.jbFSnA  
adOpenStatic 3 启动一个Static类型的游标。 V+&C_PyC  
------------------------------------------------------------- mJL=H  
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。 |QB[f*y5  
!U8n=A#,-  
------------------------------------------------------------- %uy5la  
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic 24Uvi:B?~  
------------------------------------------------------------- 5|0}   
AbsolutePage 不支持 不支持 可读写 可读写 X{G&r$  
AbsolutePosition 不支持 不支持 可读写 可读写 #1oyRD-  
ActiveConnection 可读写 可读写 可读写 可读写 y$C\b\hM  
BOF 只读 只读 只读 只读 ErXzKf  
Bookmark 不支持 不支持 可读写 可读写 r>ca17  
CacheSize 可读写 可读写 可读写 可读写 -oR P ZtW  
CursorLocation 可读写 可读写 可读写 可读写 R /0zB  
CursorType 可读写 可读写 可读写 可读写 k~=_]sLn  
EditMode 只读 只读 只读 只读 *'jI>^o  
EOF 只读 只读 只读 只读 Ty;P`Uv]r  
Filter 可读写 可读写 可读写 可读写 Ne9S90HsB6  
LockType 可读写 可读写 可读写 可读写 Iu|4QE  
MarshalOptions 可读写 可读写 可读写 可读写 pDV8B/{  
MaxRecords 可读写 可读写 可读写 可读写 A{Dy3tm=  
PageCount 不支持 不支持 只读 只读 /@QPJ~%8Ud  
PageSize 可读写 可读写 可读写 可读写 @pkQ2OM 2  
RecordCount 不支持 不支持 只读 只读 N(=Z4Nk5  
Source 可读写 可读写 可读写 可读写 ap|$8 G  
State 只读 只读 只读 只读 T_/ n#e  
Status 只读 只读 只读 只读 @\s*f7  
AddNew 支持 支持 支持 支持 S5>?j n1  
CancelBatch 支持 支持 支持 支持 FH7h?!|t  
CancelUpdate 支持 支持 支持 支持 ee\QK,QV  
Clone 不支持 不支持 zVyMmw\  
Close 支持 支持 支持 支持 -"~XI~a@Wo  
Delete 支持 支持 支持 支持 {7Q)2NC  
GetRows 支持 支持 支持 支持 ?3=y]Vb+  
Move 不支持 支持 支持 支持 tqXr6+!Q  
MoveFirst 支持 支持 支持 支持 fobnK~2  
MoveLast 不支持 支持 支持 支持 ^9fY %98  
MoveNext 支持 支持 支持 支持 %v)O!HC}  
MovePrevious 不支持 支持 支持 支持 Vc*"Q8aZ~  
NextRecordset 支持 支持 支持 支持 -fCR^`UOS  
Open 支持 支持 支持 支持 U~1)a(Yu;  
Requery 支持 支持 支持 支持 ) o`ep{<t  
Resync 不支持 不支持 支持 支持 g`\5!R1  
Supports 支持 支持 支持 支持 P}8cSX9  
Update 支持 支持 支持 支持 R;3n L[{U  
UpdateBatch 支持 支持 支持 支持 s_}q  
-------------------------------------------------------------- >7,?X_:A-1  
其中NextRecordset方法并不适用于Microsoft Access数据库。 5-?*Boi>i  
My<.^~  
LockType ,y}@I"  
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下: ^ZPynduR  
4U>g0  
------------------------------------------------------------- 51-@4E2:l:  
常数 常数值 说明 kr>4%Ndm7  
-------------------------------------------------------------- 92XG|CWX  
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法 oFL7dL  
adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。 Gw-y6e'|Y  
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。 i# bcjH  
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、 9zE/SDu7\  
删、改的操作。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

描述
快速回复

您目前还是游客,请 登录注册
欢迎提供真实交流,考虑发帖者的感受
认证码:
验证问题:
10+5=?,请输入中文答案:十五