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

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

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

1.如何用Asp判断你的网站的虚拟物理路径 KnC;j-j  
答:使用Mappath方法 %`P6a38j  
< p align="center" >< font size="4" face="Arial" >< b > R`F54?th  
The Physical path to this virtual website is: HCI|6{k  
< /b >< /font > xnW3,:0  
< font color="#FF0000" size="6" face="Arial" > \p-3P)U  
< %= Server.MapPath("\")% > |@x^5Ab$T  
< /font >< /p > X&[S.$_U  
2.我如何知道使用者所用的浏览器? $`Z-,AJc  
答:使用the Request object方法 hwaU;>F  
strBrowser=Request.ServerVariables("HTTP_USER_AGENT") $EB&]t+  
If Instr(strBrowser,"MSIE") < > 0 Then Dg$Z5`%k8  
  Response.redirect("ForMSIEOnly.htm") . _5g<aw;  
Else V^P]QQ\ )  
  Response.redirect("ForAll.htm") )@xHL]!5m  
End If }jQxwi)  
"i\rhX  
3.如何计算每天的平均反复访问人数 1N_Gk&  
答:解决方法 R7o3X,-iwn  
< % startdate=DateDiff("d",Now,"01/01/1990") * ?a-m\  
if strdate< 0 then startdate=startdate*-1 XA~Cc<v  
avgvpd=Int((usercnt)/startdate) % > .X;zEyd  
显示结果 mZ^z%+Ca|  
< % response.write(avgvpd) % > MqBA?7  
that is it.this page have been viewed since November 10,1998 !TH3oLd"  
*Op;].>E  
4.如何显示随机图象 >[=fbL@N<@  
< % dim p,ppic,dpic G/nSF:rp  
ppic=12 ?v-( :OF  
randomize Gk9Y{  
p=Int((ppic*rnd)+1) tSVN}~1\  
dpic="graphix/randompics/"&p&".gif" }dl[~iKW  
% > |D %m>M6  
显示 E|t. 3  
< img src="< %=dpic% >" > ze<Lc/;X~  
K85;7R5  
5.如何回到先前的页面 !1tHg Z2\  
答:< a href="< %=request.serverVariables("Http_REFERER")% >" >preivous page< /a > }7>r,  
或用图片如:< img src="arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" > fb7Gy  
s4@dEK8W  
6.如何确定对方的IP地址 2F0@M|'  
答:< %=Request.serverVariables("REMOTE_ADDR)% > [X'XxYbZ  
qn VxP&  
7.如何链结到一副图片上 (j^Qa~{mG4  
答:< % @Languages=vbscript % > 4aAuE0  
< % response.expires=0 .5ap9li]  
strimagename="graphix/errors/erroriamge.gif" h01 HX  
response.redirect(strimagename) wo($7'.@  
% > N02X*NC  
0j^QY6  
8.强迫输入密码对话框 GJ:65)KU  
答:把这句话放载页面的开头 ^tS{a*Yn  
< % response.status="401 not Authorized" 2sj[hI  
response.end I%]~]a  
% > R36BvW0X  
:}\w2W E[  
9.如何传递变量从一页到另一页 ?v4-<ewD  
答:用 HIDDEN 类型来传递变量 ~s@PP'!  
< % form method="post" action="mynextpage.asp" >  -a``  
< % for each item in request.form % > "<3F[[;~  
< input namee="< %=item% >" type="HIDDEN" 6>rgoT)6~  
value="< %=server.HTMLEncode(Request.form(item)) % >" > mRe BS  
< % next % > si:p98[w  
< /form > UEZnd8  
[?3]+xr :  
10.为何我在 asp 程序内使用 msgbox,程序出错说没有权限 uD=i-IHT  
答:由于 asp 是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你 (:) 呵呵) 没有权限。但是ASP和客户端脚本结合倒可以显示一个对话框,as follows:  |,*N>e  
<%yourVar="测试对话框"%>  L|hdV\  
<script language='javascript'> H ?Vo#/  
alert("<%=yourvar%>") F-L!o8o  
</script> I}djDtJ  
e6E{l  
11.有没有办法保护自己的源代码,不给人看到 J*Dt\[X  
答:可以去下载一个微软的Windows Script Encoder,它可以对asp的脚本和客户端javascript/vbscript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装一个ie5就有了)才能执行。 /5qeNjI+2  
`SdvX n  
12.怎样才能将 query string 从一个 asp 文件传送到另一个? Aofk<O!M  
答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING")) f tS^|%p  
S VCTiG8t  
13.global.asa文件总是不起作用? &cnciEw1  
答:只有web目录设置为web application, global.asa才有效,并且一个web application的根目录下 global.asa才有效。IIS4可以使用Internet Service Manager设置application setting 怎样才能使得htm文件如同asp文件一样可以执行脚本代码? pCXceNFo  
+Bg$]~ T  
14.怎样才能使得htm文件如同asp文件一样可以执行脚本代码? td*1  
答: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处理,效率将降低。 i3bH^WwE&k  
?b?6/_W~R  
15.如何注册组件 ({XB,Rm  
答:有两种方法。 Y>Oh]?  
第一种方法:手工注册 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 KIyhvY~  
Gk<M@d^hQ  
第二种方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改进。MTS允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在MTS上注册组件的步骤如下: h^yLmRL  
1) 打开IIS管理控制台。 ;VhilWaF-  
2) 展开transaction server,右键单击"pkgs installed"然后选择"new package"。 Rra3)i`*  
3) 单击"create an empty package"。 %49P<vo`?  
4) 给该包命名。 %w+"MkH _  
5) 指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator 登陆的话)。 c/:d$o-  
6) 现在使用右键单击你刚建立的那个包下面展开后的"components"。选择 "new then component"。 !GB\-(  
7) 选择 "install new component" 。 > -P UY  
8) 找到你的.dll文件然后选择next到完成。 asDk@G cu  
要删除这个对象,只要选择它的图标,然后选择delete。 0GEM3~~D.?  
附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。 q"Ct=d  
nitKX.t8  
16. ASP与Access数据库连接: EL*OeyU1l  
G@Ha t  
<%@ language=VBscript%> *P\$<4l  
<% tM&O<6Y  
dim conn,mdbfile W6~aL\[  
mdbfile=server.mappath("数据库名称.mdb") _ELuQ>zM]+  
set conn=server.createobject("adodb.connection") C[E[|s*l  
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile 6j*L]S c  
>K|<hzZ  
%> :Ma=P\J W  
D8Ntzsr6  
17. ASP与SQL数据库连接: Ll" Kxg  
9T`$gAI  
<%@ language=VBscript%> Sz!mn  
<% VFmG\  
dim conn gLm ]*  
set conn=server.createobject("ADODB.connection") g8=j{]~C  
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称 ]2:w?+T  
%> 79m',9{u  
;rp("<g:>  
建立记录集对象: xIOYwVC  
CcGE4BB  
set rs=server.createobject("adodb.recordset") Ijg //=  
rs.open SQL语句,conn,3,2 wSy|h*a,  
_wp>AJ r  
eo#2n8I>=1  
18. SQL常用命令使用方法: 2p^Jqp`$  
9i6z  p'  
(1) 数据记录筛选: 6_G[&   
":qhO0  
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" dBWi1vTF  
8fI]QW  
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" AVn?86ri  
M%yeI{m  
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]" 5`_UIYcI  
+'-i(]@!'  
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" k},@2#W]  
(h8RthQt  
sql="select * from 数据表 where 字段名 between 值1 and 值2" DB=^Z%%Z  
i?HN  
(2) 更新数据记录: l:@`.'-=  
=<BPoGs5  
sql="update 数据表 set 字段名=字段值 where 条件表达式" {)CN.z:O  
:@~Nszlb  
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"  ~ERA  
yQ [n7du  
(3) 删除数据记录: Kggc9^ 7  
s ahXPl%;U  
sql="delete from 数据表 where 条件表达式" 3D}rxI8N  
h,*-V 'X.k  
sql="delete from 数据表" (将数据表所有记录删除) 1B0+dxN`  
dED&-e#  
(4) 添加数据记录: hZwbYvu  
J< vVsz+7:  
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" MnPk+eNJm  
srGF=1_  
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) _{C =d3  
it.'.aK4  
(5) 数据记录统计函数: W2w A66MB  
g7l?/p[n  
AVG(字段名) 得出一个表格栏平均值 "y7IH GJ\3  
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 rw }wQP_'  
MAX(字段名) 取得一个表格栏最大的值 N51e.;  
MIN(字段名) 取得一个表格栏最小的值 p Lwtm@  
SUM(字段名) 把数据栏的值相加 t_"]n*zk1  
P+Q}bTb8  
引用以上函数的方法: )JXlPU  
sK/Z 'h{|  
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" ]r(&hqdR  
set rs=conn.excute(sql) $/FL)m8.3  
Zsto8wuf#  
用 rs("别名") 获取统的计值,其它函数运用同上。 DedY(JOvB  
#zed8I:w  
(5) 数据表的建立和删除: T1U8ZEK<iu  
|44 E:pA  
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) A|`mIma#  
6 =H]p1p~O  
例:CREATE TABLE tab01(name varchar(50),datetime default now()) L;i(@tp|v  
s= bP@[Gj  
DROP TABLE 数据表名称 (永久性删除一个数据表) :\"V5  
,Zva^5  
19. 记录集对象的方法: \"| 7o8  
vUR@P  -  
rs.movenext 将记录指针从当前的位置向下移一行 {%BPP{OFk  
rs.moveprevious 将记录指针从当前的位置向上移一行 Yl`)%6'5|  
rs.movefirst 将记录指针移到数据表第一行 (&!x2M  
rs.movelast 将记录指针移到数据表最后一行 .FeVbZW  
rs.absoluteposition=N 将记录指针移到数据表第N行 2hf7F";Af  
rs.absolutepage=N 将记录指针移到第N页的第一行 O gtrp)x9  
rs.pagesize=N 设置每页为N条记录 RQ;}+S  
rs.pagecount 根据 pagesize 的设置返回总页数 H$k2S5,,z  
rs.recordcount 返回记录总数 gkFw=Cd  
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否 3y}8|ML  
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否 E#VF7 9L  
rs.delete 删除当前记录,但记录指针不会向下移动 2I>`{#fV  
rs.addnew 添加记录到数据表末端 r:U/a=V  
rs.update 更新数据表记录 MWI7u7{  
aflBDo1c  
---------------------------------------  jAxrU  
pnp)- a*7  
20 Recordset对象方法 nU,~*Us  
^ 0g!,L  
Open方法 l&_PsnU  
]T;  
recordset.Open Source,ActiveConnection,CursorType,LockType,Options VLcwBdo  
,DD}o  
Source 6=p!`DOd  
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。 <T`&NA@%~$  
YZZog6%  
ActiveConnection "Ky&x$dje  
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 b6d}<b9#  
6$&%z Eh  
CursorType sf Zb$T J  
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下: X@\ 9}*9  
-------------------------------------------------------------- dYZB> OS  
常数 常数值 说明 [e7nW9\l  
------------------------------------------------------------- : U,-v  
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。 "J{A}g[  
adOpenKeyset 1 启动一个Keyset类型的游标。 2Ft#S8  
adOpenDynamic 2 启动一个Dynamic类型的游标。 yJ*g ;  
adOpenStatic 3 启动一个Static类型的游标。 Huc|HL#C  
------------------------------------------------------------- P-\65]`C  
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。 gTk*v0WBm  
.RpWE.C  
------------------------------------------------------------- F./P,hhN9  
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic C1x(4&h  
------------------------------------------------------------- 4ah5}9{g  
AbsolutePage 不支持 不支持 可读写 可读写 W?yGV{#V(=  
AbsolutePosition 不支持 不支持 可读写 可读写 >"[Nmx0;w  
ActiveConnection 可读写 可读写 可读写 可读写 N>IkK*v  
BOF 只读 只读 只读 只读 &#;lmYyaui  
Bookmark 不支持 不支持 可读写 可读写 :8U@KABH@h  
CacheSize 可读写 可读写 可读写 可读写 $pajE^d4V  
CursorLocation 可读写 可读写 可读写 可读写 -/R?D1kOq  
CursorType 可读写 可读写 可读写 可读写 @c=bH>Oz  
EditMode 只读 只读 只读 只读 M%2w[<-8c  
EOF 只读 只读 只读 只读 ~H:.&'E  
Filter 可读写 可读写 可读写 可读写 P,)\#([vc  
LockType 可读写 可读写 可读写 可读写 z}-8pDD'  
MarshalOptions 可读写 可读写 可读写 可读写 0Vj!'=Ntv  
MaxRecords 可读写 可读写 可读写 可读写 aPin6L$;)  
PageCount 不支持 不支持 只读 只读 DpIk$X  
PageSize 可读写 可读写 可读写 可读写 fJ;1ii~  
RecordCount 不支持 不支持 只读 只读  #zg"E<  
Source 可读写 可读写 可读写 可读写 .[o`TlG%  
State 只读 只读 只读 只读 BOme`0A  
Status 只读 只读 只读 只读 ?>q5Abp[  
AddNew 支持 支持 支持 支持 Hm]\.ZEy  
CancelBatch 支持 支持 支持 支持 z q@"qnr  
CancelUpdate 支持 支持 支持 支持 9`Xr7gmQf  
Clone 不支持 不支持 GriFb]ml"  
Close 支持 支持 支持 支持 %JuT'7VB  
Delete 支持 支持 支持 支持 W];l[D<S*  
GetRows 支持 支持 支持 支持 o)M<^b3KO  
Move 不支持 支持 支持 支持 Wb;D9Z  
MoveFirst 支持 支持 支持 支持 Nuaq{cl  
MoveLast 不支持 支持 支持 支持 V82hk0*j  
MoveNext 支持 支持 支持 支持 (/C 8\}Ox  
MovePrevious 不支持 支持 支持 支持 s'$3bLcb  
NextRecordset 支持 支持 支持 支持  k<  
Open 支持 支持 支持 支持  q{pa _  
Requery 支持 支持 支持 支持 ~N8$abQJV  
Resync 不支持 不支持 支持 支持 Xj$'i/=-+c  
Supports 支持 支持 支持 支持 R_Uy.0=4  
Update 支持 支持 支持 支持 Sz>Lbs  
UpdateBatch 支持 支持 支持 支持 Hli22~7T:  
-------------------------------------------------------------- !Aw.)<teW  
其中NextRecordset方法并不适用于Microsoft Access数据库。 -_irkpdC[  
qP72JxT  
LockType 3ZhuC".c  
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下: g5t`YcL  
#NWS)^&1b  
------------------------------------------------------------- `vD.5  
常数 常数值 说明 a7"Aq:IjU  
-------------------------------------------------------------- V(0V$&qipc  
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法 ?L6pB]l8b  
adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。 < mp_[-c  
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。 v8>bR|n5  
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、 AL*M`m_  
删、改的操作。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水

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

描述
快速回复

您目前还是游客,请 登录注册
批量上传需要先选择文件,再选择上传
认证码:
验证问题:
10+5=?,请输入中文答案:十五