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

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

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

1.如何用Asp判断你的网站的虚拟物理路径 r3X|*/  
答:使用Mappath方法 Do@:|n  
< p align="center" >< font size="4" face="Arial" >< b > u|m>h(O  
The Physical path to this virtual website is: 9W$d'IA  
< /b >< /font > +QNFu){G  
< font color="#FF0000" size="6" face="Arial" > $~UQKv>  
< %= Server.MapPath("\")% > AJ-p|[wPz  
< /font >< /p > +hdD*}qauC  
2.我如何知道使用者所用的浏览器?  |*079v  
答:使用the Request object方法 [t55Kz*cD  
strBrowser=Request.ServerVariables("HTTP_USER_AGENT") 5ru&In&  
If Instr(strBrowser,"MSIE") < > 0 Then C2GF N1i  
  Response.redirect("ForMSIEOnly.htm") I8r5u=PH  
Else H"PnX-fGN  
  Response.redirect("ForAll.htm") b-e3i;T!}~  
End If 1(C3;qlVD  
 V"n0"\k,  
3.如何计算每天的平均反复访问人数 I(fq4$  
答:解决方法 O!+LM{> F  
< % startdate=DateDiff("d",Now,"01/01/1990") M7"I]$|\  
if strdate< 0 then startdate=startdate*-1 V>}@--$c-r  
avgvpd=Int((usercnt)/startdate) % > ]PVPt,c  
显示结果 k|W=kt$P  
< % response.write(avgvpd) % > 'LZF^m _<<  
that is it.this page have been viewed since November 10,1998 td^2gjr^5  
Uq/#\7/rL  
4.如何显示随机图象 !4uTi [e  
< % dim p,ppic,dpic f(.@]eu X  
ppic=12 reml|!F-)  
randomize Sfc0 ~1  
p=Int((ppic*rnd)+1) T1bPI/  
dpic="graphix/randompics/"&p&".gif" et";*EZJX  
% > .5+*,+-  
显示 b9uo6u4s  
< img src="< %=dpic% >" > l1^/Q~u  
t59" [kQ  
5.如何回到先前的页面 @ mm*S:Gt#  
答:< a href="< %=request.serverVariables("Http_REFERER")% >" >preivous page< /a > loVUB'OSv  
或用图片如:< img src="arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" > [Af&K22M(X  
&wRdUIc  
6.如何确定对方的IP地址 G1MuH%4  
答:< %=Request.serverVariables("REMOTE_ADDR)% > Z&W|O>QTl  
mIVnc`3s  
7.如何链结到一副图片上 P<b.;Oz__-  
答:< % @Languages=vbscript % > )'8DK$.  
< % response.expires=0 ,)mqd2)+"  
strimagename="graphix/errors/erroriamge.gif" y3T- ^  
response.redirect(strimagename) BcaMeb-Z  
% > kR%bdN  
WrhC q6  
8.强迫输入密码对话框 +}c '4hRv  
答:把这句话放载页面的开头 4,L(  
< % response.status="401 not Authorized" IVD1 mk  
response.end Q!/<=95E  
% > xlVQ[Mt  
Eq-fR~< 9  
9.如何传递变量从一页到另一页 grEmp9Q ?  
答:用 HIDDEN 类型来传递变量 NVx`'Il8 "  
< % form method="post" action="mynextpage.asp" > 8cn)ox|J[  
< % for each item in request.form % > .+3= H@8h  
< input namee="< %=item% >" type="HIDDEN" |+Z, 7~!  
value="< %=server.HTMLEncode(Request.form(item)) % >" > l c)*HYqU  
< % next % > ^.Cfa  
< /form > 03?TT,y$  
jR7 , b5  
10.为何我在 asp 程序内使用 msgbox,程序出错说没有权限 ^,zE Nqg7  
答:由于 asp 是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你 (:) 呵呵) 没有权限。但是ASP和客户端脚本结合倒可以显示一个对话框,as follows: p D!IB`cA4  
<%yourVar="测试对话框"%> IdTeue  
<script language='javascript'> 4kGA`XhS*  
alert("<%=yourvar%>") n k]tq3.[  
</script> v0!>":  
>B$ZKE  
11.有没有办法保护自己的源代码,不给人看到 Kx9Cx 5B  
答:可以去下载一个微软的Windows Script Encoder,它可以对asp的脚本和客户端javascript/vbscript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装一个ie5就有了)才能执行。 <mlQn?u  
]bO {001y,  
12.怎样才能将 query string 从一个 asp 文件传送到另一个? 9_'xq.uP  
答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING")) @`2<^-r\  
'U]= T<  
13.global.asa文件总是不起作用? Q&:% U  
答:只有web目录设置为web application, global.asa才有效,并且一个web application的根目录下 global.asa才有效。IIS4可以使用Internet Service Manager设置application setting 怎样才能使得htm文件如同asp文件一样可以执行脚本代码? y XZZ)i_  
DZ~w8v7V  
14.怎样才能使得htm文件如同asp文件一样可以执行脚本代码? BMU}NZA  
答: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处理,效率将降低。 *leQd^47  
4s/4z@3a  
15.如何注册组件 ^ ab%Mbb  
答:有两种方法。 u`Djle  
第一种方法:手工注册 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 quc?]rb  
vPEL'mw/3#  
第二种方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改进。MTS允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在MTS上注册组件的步骤如下: [0CoQ5:d?&  
1) 打开IIS管理控制台。 log{jF  
2) 展开transaction server,右键单击"pkgs installed"然后选择"new package"。 .>>@q!!s!  
3) 单击"create an empty package"。 |33pf7o  
4) 给该包命名。 j>~^jz:  
5) 指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator 登陆的话)。 uy\< t  
6) 现在使用右键单击你刚建立的那个包下面展开后的"components"。选择 "new then component"。 T/G1v;]  
7) 选择 "install new component" 。 Mj |)KDL  
8) 找到你的.dll文件然后选择next到完成。 pH.wCD:1n  
要删除这个对象,只要选择它的图标,然后选择delete。 LFy5tX#  
附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。 I1U{t  
=zXpeo&|m  
16. ASP与Access数据库连接: S!8eY `C.  
~Kda#=  
<%@ language=VBscript%> `),7*gn*)  
<% N;tUrdgQ  
dim conn,mdbfile h4H~;Wl0  
mdbfile=server.mappath("数据库名称.mdb") d{&+xl^ll  
set conn=server.createobject("adodb.connection") PCnE-$QH  
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile K^tM$l\  
x|*v(,7b]!  
%> *A2J[,?c  
gWA)V*}f  
17. ASP与SQL数据库连接: +B^ / =3P  
aB<~T[H%h  
<%@ language=VBscript%> B, nCx=\S  
<% gT-'#K2qT  
dim conn bs U$mtW  
set conn=server.createobject("ADODB.connection") 1C+Y|p?KA  
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称 |J2_2a/"  
%> a*hOT_;#  
5%D:w S1  
建立记录集对象: h>= e<H?f  
XyJ*>;q  
set rs=server.createobject("adodb.recordset") .6xP>!E}Q  
rs.open SQL语句,conn,3,2 W tnZF]1:u  
.UakO,"z  
rhMsZ={M  
18. SQL常用命令使用方法: IQMk:  
A@j;H|  
(1) 数据记录筛选: 1}tZ,w>  
&1%W-&bc6  
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" 'j !!h4  
sDK lbb  
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" -. L)-%wIV  
N $M#3Y;  
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]" Z%D*2wm4  
Z_}vjk~s  
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" q5 I2dNE  
x|_%R v  
sql="select * from 数据表 where 字段名 between 值1 and 值2" zPe4WE|  
/[VafR!  
(2) 更新数据记录: (BVLlOo?J  
P.gk'\<k  
sql="update 数据表 set 字段名=字段值 where 条件表达式" 'v* =}k  
}$hxD9z  
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" W*QD'  
A)2vjM9}K  
(3) 删除数据记录: |Pz-  
@%IZKYf c~  
sql="delete from 数据表 where 条件表达式" ]3 YJE P  
SGZOfTcY  
sql="delete from 数据表" (将数据表所有记录删除) A,W-=TC  
[V  T&  
(4) 添加数据记录: {lT9gJ+  
im>Sxu@  
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" ;tf1 #6{  
gd]vrW'wj  
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) 2*vOo^f  
VjtI1I  
(5) 数据记录统计函数: }IC$Du#  
r[vMiVb  
AVG(字段名) 得出一个表格栏平均值 X, <&#l  
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 W=j/2c/  
MAX(字段名) 取得一个表格栏最大的值 @X>k@M  
MIN(字段名) 取得一个表格栏最小的值 ^b~&}uU  
SUM(字段名) 把数据栏的值相加 Kf76./  
B~cq T/\?  
引用以上函数的方法: p.n]y=o.)  
p/:)Z_  
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" D'YF [l  
set rs=conn.excute(sql) i6-q%%]6  
|A8Ar7)  
用 rs("别名") 获取统的计值,其它函数运用同上。 =   
O_ nk8  
(5) 数据表的建立和删除: a_^3:}i~D  
mn{8"@Z  
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) n&i WYECz  
P!,\V\TY]  
例:CREATE TABLE tab01(name varchar(50),datetime default now()) #^gn,^QQ  
p>Ju)o  
DROP TABLE 数据表名称 (永久性删除一个数据表) l,1}1{k&  
9r fR  
19. 记录集对象的方法: j?jEWreq]~  
?g}n$%*5y!  
rs.movenext 将记录指针从当前的位置向下移一行 4};!nYey!  
rs.moveprevious 将记录指针从当前的位置向上移一行 : :uD%a zd  
rs.movefirst 将记录指针移到数据表第一行  @es}bKP  
rs.movelast 将记录指针移到数据表最后一行 /"- k ;jz  
rs.absoluteposition=N 将记录指针移到数据表第N行 $|C%G6!s?@  
rs.absolutepage=N 将记录指针移到第N页的第一行 yUq,9.6Ig  
rs.pagesize=N 设置每页为N条记录 5{zXh  
rs.pagecount 根据 pagesize 的设置返回总页数 79~,KFct  
rs.recordcount 返回记录总数 I}p uN!  
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否 Xj&{M[k<  
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否 qDqIy+WR  
rs.delete 删除当前记录,但记录指针不会向下移动 K8pfk*NZ_@  
rs.addnew 添加记录到数据表末端 rwtSn?0z"  
rs.update 更新数据表记录 /&$'v:VB  
)?%FU?2jrn  
--------------------------------------- R$K.;  
7,!Mmu  
20 Recordset对象方法 =jkC]0qx  
aj20, w  
Open方法 MnO,Cd6{%d  
^8o'\V"m^  
recordset.Open Source,ActiveConnection,CursorType,LockType,Options /1h`O@VA  
@\i6m]\X  
Source RI:x`do  
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。 VD,F?L!  
6.6~w\fR8  
ActiveConnection yH|ucN~k5S  
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 T73oW/.0X?  
`-D6:- ,w  
CursorType ?#qA>:2,  
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下: V3$!`T}g4  
-------------------------------------------------------------- G`R Ed-Z[  
常数 常数值 说明 $ e+@9LNK  
------------------------------------------------------------- s^^X.z ,  
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。 5w gtc~  
adOpenKeyset 1 启动一个Keyset类型的游标。 Q#}} 1}Ja  
adOpenDynamic 2 启动一个Dynamic类型的游标。 Umm_FEU#]  
adOpenStatic 3 启动一个Static类型的游标。 %bt2^  
------------------------------------------------------------- MKJ9PcVi  
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。 e=%7tK*  
(gNI6;P;}  
------------------------------------------------------------- %\}|&z6  
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic Vt5%A}.VQ  
------------------------------------------------------------- j+*VP  
AbsolutePage 不支持 不支持 可读写 可读写 @!Il!+^3  
AbsolutePosition 不支持 不支持 可读写 可读写 teUCK(;23  
ActiveConnection 可读写 可读写 可读写 可读写 Ar'}#6  
BOF 只读 只读 只读 只读 H+F?)VX}oA  
Bookmark 不支持 不支持 可读写 可读写 T5z %X:VD(  
CacheSize 可读写 可读写 可读写 可读写 Bt Bo%t&  
CursorLocation 可读写 可读写 可读写 可读写 V{HZ/p_Y  
CursorType 可读写 可读写 可读写 可读写 8q)2 )p  
EditMode 只读 只读 只读 只读 `-\4Dx1!q  
EOF 只读 只读 只读 只读 3! dD!'  
Filter 可读写 可读写 可读写 可读写 j5R= K*y  
LockType 可读写 可读写 可读写 可读写 7Fq mT  
MarshalOptions 可读写 可读写 可读写 可读写 9u1_L`+b  
MaxRecords 可读写 可读写 可读写 可读写 T?) U|  
PageCount 不支持 不支持 只读 只读 ~r]ZD)  
PageSize 可读写 可读写 可读写 可读写 )3.udx  
RecordCount 不支持 不支持 只读 只读 9'3bzhT$  
Source 可读写 可读写 可读写 可读写 +DF<o U~  
State 只读 只读 只读 只读 |}es+<P  
Status 只读 只读 只读 只读 -v&Q 'a  
AddNew 支持 支持 支持 支持 1ScfX\ F=  
CancelBatch 支持 支持 支持 支持 J6hWcA6 g  
CancelUpdate 支持 支持 支持 支持 1|;WaO1Q  
Clone 不支持 不支持 jn^i4f>N  
Close 支持 支持 支持 支持 0+/L?J3  
Delete 支持 支持 支持 支持 <z#r3J  
GetRows 支持 支持 支持 支持 IQGIU3O  
Move 不支持 支持 支持 支持 [dk|lkj@u\  
MoveFirst 支持 支持 支持 支持 .W,< ]L '  
MoveLast 不支持 支持 支持 支持 A{>]M@QC2  
MoveNext 支持 支持 支持 支持 izY,t!  
MovePrevious 不支持 支持 支持 支持 3 cT  
NextRecordset 支持 支持 支持 支持 >%qGK-_  
Open 支持 支持 支持 支持 ^M,t`r{  
Requery 支持 支持 支持 支持 ;1NZY.pyc  
Resync 不支持 不支持 支持 支持 kC01s  
Supports 支持 支持 支持 支持 U> e@m?  
Update 支持 支持 支持 支持 3 V8SKBS  
UpdateBatch 支持 支持 支持 支持 _L_SNjA_  
-------------------------------------------------------------- oMLpl3pl  
其中NextRecordset方法并不适用于Microsoft Access数据库。 01H3@0Q6  
>/6v` 8F  
LockType PaMi5Pq  
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下: YxS*im[%]  
>Eik>dQ a  
------------------------------------------------------------- HjGT{o  
常数 常数值 说明 A7VF >{L./  
-------------------------------------------------------------- T>g1! -^  
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法 a+A/l  
adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。 BR*" "/3`  
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。 eP &K]#  
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、 ;y=w :r\A  
删、改的操作。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水

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

描述
快速回复

您目前还是游客,请 登录注册
如果您在写长篇帖子又不马上发表,建议存为草稿
认证码:
验证问题:
10+5=?,请输入中文答案:十五