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

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

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

1.如何用Asp判断你的网站的虚拟物理路径 kq1M <lk  
答:使用Mappath方法 Ti@P4:q  
< p align="center" >< font size="4" face="Arial" >< b > 9i2vWSga  
The Physical path to this virtual website is: '/yx_R K2?  
< /b >< /font > )ejXeg  
< font color="#FF0000" size="6" face="Arial" > {^$"/hj  
< %= Server.MapPath("\")% > VQ,\O  
< /font >< /p > WEV{C(u<k!  
2.我如何知道使用者所用的浏览器? K}5 $;W#  
答:使用the Request object方法 vu.S>2Wv  
strBrowser=Request.ServerVariables("HTTP_USER_AGENT") s!o<Pd yJK  
If Instr(strBrowser,"MSIE") < > 0 Then X$9D0;L  
  Response.redirect("ForMSIEOnly.htm") E~Up\f  
Else aIt 0;D  
  Response.redirect("ForAll.htm") Am=PUQF$  
End If k0 e|8g X  
#Mem2cz  
3.如何计算每天的平均反复访问人数 1:{O RX[;  
答:解决方法 [>Kxm  
< % startdate=DateDiff("d",Now,"01/01/1990") zk 'e6  
if strdate< 0 then startdate=startdate*-1 4qSS<SqY  
avgvpd=Int((usercnt)/startdate) % > qYu!:xa8  
显示结果 C@?e`=9(  
< % response.write(avgvpd) % > %`T^qh_dE  
that is it.this page have been viewed since November 10,1998 *(SBl}f4l  
A$"$`)P!  
4.如何显示随机图象 #u=O 5%.  
< % dim p,ppic,dpic Ff#N|L'9_  
ppic=12 fN*4(yw  
randomize ubCJZ"!  
p=Int((ppic*rnd)+1) k#=leu"I  
dpic="graphix/randompics/"&p&".gif" 7quwc'!  
% > r+#V{oE_  
显示 = cI\OsV&?  
< img src="< %=dpic% >" > Y`O}]*{>8R  
1\608~ZH  
5.如何回到先前的页面 k}0  
答:< a href="< %=request.serverVariables("Http_REFERER")% >" >preivous page< /a > "6NNId|Y  
或用图片如:< img src="arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" > M"$RtS|h  
]MA)=' ~  
6.如何确定对方的IP地址 Mn\ B\  
答:< %=Request.serverVariables("REMOTE_ADDR)% > f+*2K^B  
O"-PNF,J  
7.如何链结到一副图片上 x]J-q5  
答:< % @Languages=vbscript % > &\]f!'jV  
< % response.expires=0 lSbM)gL  
strimagename="graphix/errors/erroriamge.gif" z Q|x>3   
response.redirect(strimagename) U/&qV"Ih  
% > B oj{+rE0  
owY_cDzrH  
8.强迫输入密码对话框 cSs/XJZ  
答:把这句话放载页面的开头 0!'M#'m  
< % response.status="401 not Authorized" -JO46 #m  
response.end o(SJuZC/U  
% > U#1yl6e\I  
&lfF!   
9.如何传递变量从一页到另一页 Pymh^i  
答:用 HIDDEN 类型来传递变量 l'{goyf  
< % form method="post" action="mynextpage.asp" > Y)5uK:)^  
< % for each item in request.form % > rnBeL _8C  
< input namee="< %=item% >" type="HIDDEN" 3^-)gK  
value="< %=server.HTMLEncode(Request.form(item)) % >" > /G{3p&9  
< % next % > y $ DB  
< /form > Umwg iw  
;o@`l$O   
10.为何我在 asp 程序内使用 msgbox,程序出错说没有权限 [c!vsh]^  
答:由于 asp 是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你 (:) 呵呵) 没有权限。但是ASP和客户端脚本结合倒可以显示一个对话框,as follows: S+xGHi)  
<%yourVar="测试对话框"%> +p}Xmn  
<script language='javascript'> r~Ubgd ]U  
alert("<%=yourvar%>") rMFZ#38d  
</script> ]:#$6D"  
ds[Z=_Ll  
11.有没有办法保护自己的源代码,不给人看到 kuud0VWJ  
答:可以去下载一个微软的Windows Script Encoder,它可以对asp的脚本和客户端javascript/vbscript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装一个ie5就有了)才能执行。 adE0oXQH"  
BH*]OXW\  
12.怎样才能将 query string 从一个 asp 文件传送到另一个? v%7JZ<I'A  
答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING")) IguG0 3:.N  
@dKf]&h%%  
13.global.asa文件总是不起作用? :8L61d2(  
答:只有web目录设置为web application, global.asa才有效,并且一个web application的根目录下 global.asa才有效。IIS4可以使用Internet Service Manager设置application setting 怎样才能使得htm文件如同asp文件一样可以执行脚本代码? gV44PI6h  
9*Twx&  
14.怎样才能使得htm文件如同asp文件一样可以执行脚本代码? m1; <T@  
答: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处理,效率将降低。 k 5r*?Os  
v;qL? _:=c  
15.如何注册组件 vHe.+XY  
答:有两种方法。 .MPOUo/e  
第一种方法:手工注册 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 O xaua  
4wD^?S!p  
第二种方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改进。MTS允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在MTS上注册组件的步骤如下: Q)X\VQcgj  
1) 打开IIS管理控制台。 k+G4<qw  
2) 展开transaction server,右键单击"pkgs installed"然后选择"new package"。 vlyNQ7"%  
3) 单击"create an empty package"。 CKt~#$ I%  
4) 给该包命名。 h?tV>x/Fu  
5) 指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator 登陆的话)。 {Om3fSk:  
6) 现在使用右键单击你刚建立的那个包下面展开后的"components"。选择 "new then component"。 ^g){)rz|  
7) 选择 "install new component" 。 p;Ok.cXVp  
8) 找到你的.dll文件然后选择next到完成。 E :g ArQ  
要删除这个对象,只要选择它的图标,然后选择delete。 ;RZa<2  
附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。 ^a5~FI:  
4GejT(U  
16. ASP与Access数据库连接: &'2l_b  
'u%;6'y  
<%@ language=VBscript%> Z:gsguX  
<% ywtDz8!^u  
dim conn,mdbfile +Ws}a  
mdbfile=server.mappath("数据库名称.mdb") EMH}VigR  
set conn=server.createobject("adodb.connection") tl^;iE!-  
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile s/^= WV  
DYk->)   
%> /38Pp%  
GuDD7~qxY  
17. ASP与SQL数据库连接: u}0t`w:  
xW )8mv?4n  
<%@ language=VBscript%> U]&%EqLS  
<% -* j;  
dim conn 0vNM#@  
set conn=server.createobject("ADODB.connection") 93 b5S>&r  
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称 8k% :w0H  
%> m,_oX1h  
1fp&"K:yR  
建立记录集对象: a' fb0fz  
SygsZv&LZ  
set rs=server.createobject("adodb.recordset") n{* [Y  
rs.open SQL语句,conn,3,2 g@i 4H[k  
1:V/['|*g)  
Y(mwJud|  
18. SQL常用命令使用方法: UM^hF%  
5S?Xl|8E  
(1) 数据记录筛选: Ek\Zi#f<  
w5R9\<3L  
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" YWd(xm"4  
Ase1R=0  
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" ECfY~qK  
Ok"wec+,  
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]" Nq1RAM  
8u23@?  
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" x6P^IkL:  
2!`Z3>Oa  
sql="select * from 数据表 where 字段名 between 值1 and 值2" A[Xw|9  
$S=OmdgR  
(2) 更新数据记录: cv&hT.1  
TQfY%GKg(  
sql="update 数据表 set 字段名=字段值 where 条件表达式" "K]4j]yU  
@}}1xP4Sr  
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" a MD?^  
$(hZw  
(3) 删除数据记录: ld0WZj  
}Q*ec/^{f  
sql="delete from 数据表 where 条件表达式" D^4V"rq  
FpYoCyD}  
sql="delete from 数据表" (将数据表所有记录删除) I!%@|[ Ow  
`Q[$R&\  
(4) 添加数据记录:  n6dg   
\Bf{/r5x  
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" ON^u|*kO  
V6o,}o&-  
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) -#hl& ^u$  
}:A kpm  
(5) 数据记录统计函数: +%^xz 1m  
EkPSG&6RZ  
AVG(字段名) 得出一个表格栏平均值 R``qQ;cc  
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 .- o,_eg1f  
MAX(字段名) 取得一个表格栏最大的值 p_5+L@%Gb  
MIN(字段名) 取得一个表格栏最小的值 ]z$<6+G  
SUM(字段名) 把数据栏的值相加 +d. Bf  
06r cW `  
引用以上函数的方法: IrK )N  
ENr&k(>0HQ  
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" JD .z}2+  
set rs=conn.excute(sql) kSrzIq<xre  
@:8|tJu8b  
用 rs("别名") 获取统的计值,其它函数运用同上。 7hQl,v< 5  
awtzt?VtLh  
(5) 数据表的建立和删除: jk?(W2c#{  
<aS1bQgaU  
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) o qTh )  
b ;b1 V  
例:CREATE TABLE tab01(name varchar(50),datetime default now()) /_HL&|N_5  
pgarGaeq  
DROP TABLE 数据表名称 (永久性删除一个数据表) LPClE5  
uhLW/?q.  
19. 记录集对象的方法: / ffWmb_4  
EJsb{$u  
rs.movenext 将记录指针从当前的位置向下移一行 ""=Vt]  
rs.moveprevious 将记录指针从当前的位置向上移一行 NiF*h~ q  
rs.movefirst 将记录指针移到数据表第一行 @A%`\Ea%  
rs.movelast 将记录指针移到数据表最后一行 C.Yz<?;S  
rs.absoluteposition=N 将记录指针移到数据表第N行 rA7S1)Kq  
rs.absolutepage=N 将记录指针移到第N页的第一行 q Sah_N  
rs.pagesize=N 设置每页为N条记录 Ib C)F> Dq  
rs.pagecount 根据 pagesize 的设置返回总页数 Nsy.!,!c  
rs.recordcount 返回记录总数 bjZ?WZr  
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否 ^  +G> N  
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否 ud1E@4;qf  
rs.delete 删除当前记录,但记录指针不会向下移动 T/nRc_I+^B  
rs.addnew 添加记录到数据表末端 6{ Eh={:b  
rs.update 更新数据表记录 1U!CD-%(  
mD:!"h/  
--------------------------------------- '>8N'*  
4D5)<3N=d'  
20 Recordset对象方法 Y-9F*8<  
[Pl$=[+  
Open方法 -rBj-4|"  
c_ i;'  
recordset.Open Source,ActiveConnection,CursorType,LockType,Options *%.*vPJ  
\ U_DTI  
Source iW)Ou?aS  
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。 .T2I]d  
\hVFK6  
ActiveConnection ~V5jjx*  
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 ;F- kE4w  
s5 BV8 M  
CursorType {$JIR}4S  
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下: }0o0"J-$  
-------------------------------------------------------------- uFgw eOJ  
常数 常数值 说明 %$Uw]a  
------------------------------------------------------------- Cq=c'(cX  
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。 Yi3DoaS;"  
adOpenKeyset 1 启动一个Keyset类型的游标。 kBkhuKd)V  
adOpenDynamic 2 启动一个Dynamic类型的游标。 += QboUN  
adOpenStatic 3 启动一个Static类型的游标。 u&:jQ:[  
------------------------------------------------------------- c|XnPqo;f  
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。 E6uIp^E  
.#SWfAb2h  
------------------------------------------------------------- +|N"i~f>j  
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic rx<fjA%  
------------------------------------------------------------- ftbu:RtK^^  
AbsolutePage 不支持 不支持 可读写 可读写 @r<w|x}  
AbsolutePosition 不支持 不支持 可读写 可读写 !|]%^G  
ActiveConnection 可读写 可读写 可读写 可读写 bZ=d!)%P-{  
BOF 只读 只读 只读 只读 G9]GK+@&F  
Bookmark 不支持 不支持 可读写 可读写 QH eUpJ/^  
CacheSize 可读写 可读写 可读写 可读写 u<[Y6m  
CursorLocation 可读写 可读写 可读写 可读写 l%fl=i~oN  
CursorType 可读写 可读写 可读写 可读写 ;iWCV& >w  
EditMode 只读 只读 只读 只读 W NCdk$  
EOF 只读 只读 只读 只读 L=>N#QR7  
Filter 可读写 可读写 可读写 可读写 *Co+UJjT  
LockType 可读写 可读写 可读写 可读写 o_S8fHqjt  
MarshalOptions 可读写 可读写 可读写 可读写 b^1!_1c  
MaxRecords 可读写 可读写 可读写 可读写 _?8T'?-1  
PageCount 不支持 不支持 只读 只读 NB[b[1 Ch  
PageSize 可读写 可读写 可读写 可读写 EJZ2V>\_-0  
RecordCount 不支持 不支持 只读 只读 Ec|#i  
Source 可读写 可读写 可读写 可读写 MZ.Jkf(  
State 只读 只读 只读 只读 UCFef,VW  
Status 只读 只读 只读 只读 %~@}wHMB  
AddNew 支持 支持 支持 支持 S&yCclM  
CancelBatch 支持 支持 支持 支持 YRl2e`&jt  
CancelUpdate 支持 支持 支持 支持 Xv6s,<#\  
Clone 不支持 不支持 2KU [Yd  
Close 支持 支持 支持 支持 nX~sVG{Q  
Delete 支持 支持 支持 支持 g]S.u8K8m  
GetRows 支持 支持 支持 支持 DY%E&Vd:h  
Move 不支持 支持 支持 支持 }Q*8QV  
MoveFirst 支持 支持 支持 支持 -7u4f y{T  
MoveLast 不支持 支持 支持 支持 -Rmz`yOq}  
MoveNext 支持 支持 支持 支持   ~*RNJ  
MovePrevious 不支持 支持 支持 支持 h c "n?  
NextRecordset 支持 支持 支持 支持 !,]_tw>R  
Open 支持 支持 支持 支持 |&7l*j(\  
Requery 支持 支持 支持 支持 G'%mmA\  
Resync 不支持 不支持 支持 支持 <7qM;) g  
Supports 支持 支持 支持 支持 $8b/"Qm  
Update 支持 支持 支持 支持 k;]&`c^5  
UpdateBatch 支持 支持 支持 支持 0 @>3fR  
-------------------------------------------------------------- -Y YQnN  
其中NextRecordset方法并不适用于Microsoft Access数据库。 z5?xmffB  
U_+>4zdm  
LockType XWk^$"  
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下: Xln'~5~)  
3a =KgOvp  
------------------------------------------------------------- ^z_~e@U  
常数 常数值 说明 FQ_4a}UOjX  
-------------------------------------------------------------- ke/QFN-`  
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法 lUDzf J}3  
adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。 0h* AtZv_  
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。 <~]s+"oVc  
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、 3]T2Zp&;  
删、改的操作。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水

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

描述
快速回复

您目前还是游客,请 登录注册
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码:
验证问题:
10+5=?,请输入中文答案:十五