信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

楼主: 翔羽
打印 上一主题 下一主题

[转帖]ASP编程常用的代码

  [复制链接]

该用户从未签到

升级  30.8%

91
 楼主| 发表于 2006-2-26 10:54:02 | 只看该作者
<p><strong>轻松实现将上传图片到数据库</strong></p><hr/><p>很久就想自己写一写程序了,不过由于赖就不想写我,今天刚好有空,所以写了这个小小的程序很容易一看就知道的,不多说了就此开始:</p><p>  我们做一个上传的。数据据库的字段就id自动编号 big 字段类型是 OLE 呵呵就简单的那个字段好了<br/>  <br/>  uppic.asp上传程序名<br/>  <br/>  &lt;%<br/>  dim rs <br/>  dim formsize,formdata,bncrlf,divider,datastart,dataend,mydata<br/>  formsize=request.totalbytes '取得客户端发过来的大小<br/>  formdata=request.binaryread(formsize)'把客户发过来的数据转成二进制作<br/>  bncrlf=chrB(13) &amp; chrB(10)<br/>  divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)<br/>  datastart=instrb(formdata,bncrlf &amp; bncrlf)+4<br/>  dataend=instrb(datastart+1,formdata,divider)-datastart<br/>  mydata=midb(formdata,datastart,dataend)'上面总共是取得图片的二进制数据<br/><br/>  %&gt;<br/>  &lt;!--#include file="conn.asp"--&gt;<br/>  &lt;%<br/>  sql="select * from pic order by id desc"<br/>  Set rs = Server.CreateObject("ADODB.Recordset")<br/>  rs.Open sql,conn,3,2<br/>  rs.addnew<br/>  rs("big").appendchunk mydata '增加到数据库中<br/>  rs.update<br/>  set rs=nothing<br/>  set conn=nothing<br/>  %&gt; <br/>  接下来是显示图片<br/>  <br/>  display.asp<br/>  <br/>  &lt;!--#include file="conn.asp"--&gt; '这个大家都知道吧,他就是与数据库连的一个程序了<br/>    &lt;% <br/>  id=request("id")<br/>  set rs=server.createobject("ADODB.recordset") <br/>  sql="select * from pic where id=" &amp; id<br/>  rs.open sql,conn,1,1 <br/>  Response.ContentType = "text/html" '显示图片的格式也可以用<br/>  <br/>  'Response.ContentType = "image/gif" 以gif显示<br/>  <br/>  'Response.ContentType = "image/jpg" 以jpg显示<br/>  Response.BinaryWrite rs("big") '显示图片<br/>  rs.close <br/>  set rs=nothing <br/>  set connGraph=nothing <br/>  <br/>  %&gt;</p><p>&nbsp;</p>

该用户从未签到

升级  30.8%

92
 楼主| 发表于 2006-2-26 10:54:25 | 只看该作者
<p><strong>记录集内随机取记录的代码</strong></p><hr/><p>&lt;% <br/>' Moving to random record - Steven Jones' Extension<br/>If Not(记录集名称.bof and 记录集名称.eof) Then<br/>' reset the cursor to the beginning<br/>If (记录集名称.CursorType &gt; 0) Then<br/>记录集名称.MoveFirst<br/>Else<br/>记录集名称.Requery<br/>End If</p><p>记录集名称_totalrn = -1<br/>记录集名称_totalrn = 记录集名称.RecordCount ' ony works on some recordsets, but much faster<br/>If (记录集名称_totalrn = -1) Then ' and if it didn't work, we still have to count the records.</p><p>' count the total records by iterating through the recordset<br/>记录集名称_totalrn=0<br/>While (Not 记录集名称.EOF)<br/>记录集名称_totalrn = 记录集名称_totalrn + 1<br/>记录集名称.MoveNext<br/>Wend</p><p>' reset the cursor to the beginning<br/>If (记录集名称.CursorType &gt; 0) Then<br/>记录集名称.MoveFirst<br/>Else<br/>记录集名称.Requery<br/>End If</p><p>End If</p><p>' now do final adjustments, and move to the random record <br/>记录集名称_totalrn = 记录集名称_totalrn - 1<br/>If 记录集名称_totalrn &gt; 0 Then<br/>Randomize<br/>记录集名称.Move Int((记录集名称_totalrn + 1) * Rnd)<br/>End If <br/>End If<br/>' all done; you should always check for an empty recordset before displaying data<br/>%&gt;</p>

该用户从未签到

升级  30.8%

93
 楼主| 发表于 2006-2-26 10:54:40 | 只看该作者
<p><strong>计算两个时间差的函数</strong></p><hr/><p>'******************************<br/>'||Function TimeDiff(sBegin, sEnd)<br/>'||本函数计算两个时间的差,可以不用更改直接使用<br/>'||作者:machinecat 2001/10/26<br/>'******************************</p><p>'******************************<br/>'注:首先需要判断用户输入的sBegin与sEnd之间的大小<br/>'可以通过DataDiff函数获得两者之间的时间差,不需要进行复杂的时间换算<br/>'******************************</p><p>Function TimeDiff(sBegin, sEnd)<br/>Dim iHourB, iMinuteB, iSecondB, iMiniSecondB<br/>Dim iHourE, iMinuteE, iSecondE, iMiniSecondE<br/>Dim dTimeB, dTimeE, dTimeDiff<br/>Dim iHour, iMinute, iSecond, iMiniSecond</p><p>iHourB = clng(Left(sBegin, 2))<br/>iMinuteB = clng(Mid(sBegin, 4, 2))<br/>iSecondB = clng(Mid(sBegin, 7, 2))<br/>iMiniSecondB = clng(Mid(sBegin, 10, 4))</p><p>iHourE = clng(Left(sEnd, 2))<br/>iMinuteE = clng(Mid(sEnd, 4, 2))<br/>iSecondE = clng(Mid(sEnd, 7, 2))<br/>iMiniSecondE = clng(Mid(sEnd, 10, 4))</p><p>dTimeB = iHourB * 3600 + iMinuteB * 60 + iSecondB + iMiniSecondB / 1000<br/>dTimeE = iHourE * 3600 + iMinuteE * 60 + iSecondE + iMiniSecondE / 1000<br/>dTimeDiff = dTimeE - dTimeB</p><p>iHour = Int(dTimeDiff / 3600)<br/>dTimeDiff = dTimeDiff - iHour * 3600<br/>iMinute = Int(dTimeDiff / 60)<br/>dTimeDiff = dTimeDiff - iMinute * 60<br/>iSecond = Int(dTimeDiff)<br/>dTimeDiff = dTimeDiff - Int(dTimeDiff)<br/>iMiniSecond = dTimeDiff</p><p>TimeDiff = iHour &amp; "小时" &amp; iMinute &amp; "分钟" &amp; iSecond &amp; FormatNumber(iMiniSecond, 3) &amp; "秒"<br/>End Function <br/></p>

该用户从未签到

升级  30.8%

94
 楼主| 发表于 2006-2-26 10:54:58 | 只看该作者
<p><strong>网址和邮件地址的转换函数</strong></p><hr/><p>&lt;%<br/>function URLconvert(str) <br/>convertstr=str<br/>urlLocation=instr(convertstr,"http://")</p><p>if (urlLocation=0) and (mailLocation=0) then <br/>URLconvert=convertstr<br/>exit function<br/>end if</p><p>if urlLocation&lt;&gt;0 then<br/>rightstr=str<br/>Do while urlLocation&lt;&gt;urlLocationend<br/>urlLocation=instr(rightstr,"http://")<br/>urlLocationend=InStrRev(rightstr,"http://")<br/>finalstr=finalstr&amp;left(rightstr,urlLocation-1)<br/>midurlstr=mid(rightstr,urlLocation+1,1)<br/>do while (asc(midurlstr)&gt;=45) and (asc(midurlstr)&lt;=126)<br/>loopint=loopint+1<br/>midurlstr=mid(rightstr,urlLocation+loopint,1)<br/>if midurlstr="" then exit do<br/>loop<br/>endURLstr=mid(rightstr,urllocation,loopint)<br/>URLstr="&lt;a href="&amp;endURLstr&amp;"&gt;"&amp;endURLstr&amp;"&lt;/a&gt;"<br/>rightstr=mid(rightstr,urllocation+loopint)<br/>finalstr=finalstr&amp;URLstr<br/>loopint=1<br/>Loop <br/>end if<br/>finalstr=finalstr&amp;rightstr</p><p>convertstr1=finalstr<br/>finalstr=""<br/>mailLocation=instr(convertstr1,"@")<br/>if mailLocation&lt;&gt;0 then<br/>Do while mailLocation&lt;&gt;mailLocationend<br/>mailLocation=instr(convertstr1,"@")<br/>mailLocationend=InStrRev(convertstr1,"@")<br/>mainmidmailstr=mid(convertstr1,mailLocation+1,1)<br/>midmailstr=mainmidmailstr<br/>do while (asc(midmailstr)&gt;=45) and (asc(midmailstr)&lt;=126)<br/>loopint1=loopint1+1<br/>midmailstr=mid(convertstr1,mailLocation-loopint1,1)<br/>loop<br/>firstSTR=mid(convertstr1,mailLocation-loopint1+1,loopint1-1)</p><p>finalstr=finalstr&amp;left(convertstr1,mailLocation-loopint1)</p><p>midmailstr1=mainmidmailstr <br/>do while (asc(midmailstr1)&gt;=45) and (asc(midmailstr1)&lt;=126)<br/>loopint2=loopint2+1<br/>midmailstr1=mid(convertstr1,mailLocation+loopint2,1)<br/>if midmailstr1="" then exit do<br/>loop<br/>secondSTR=mid(convertstr1,mailLocation,loopint2)</p><p>endmailstr=firstSTR&amp;secondSTR<br/>mailstr="&lt;a href=mailto:"&amp;endmailstr&amp;"&gt;"&amp;endmailstr&amp;"&lt;/a&gt;"<br/>finalstr=finalstr&amp;mailstr<br/>convertstr1=mid(convertstr1,maillocation+loopint2)<br/>loopint1=1<br/>loopint2=1<br/>Loop<br/>end if<br/>finalstr=finalstr&amp;convertstr1<br/>URLconvert=finalstr<br/>end function<br/>%&gt;<br/></p>

该用户从未签到

升级  30.8%

95
 楼主| 发表于 2006-2-26 10:55:52 | 只看该作者
<p><strong>最简洁的多重查询的解决方案</strong></p><hr/><p>[前言]<br/>我们经常会遇到多重查询问题,而长长的SQL语句往往让人丈二和尚摸不着头脑。特别是客户端部分填入查询条件时,如用普通方法将更是难上加难。<br/>以下巧妙地利用"where 1=1"的恒等式(事实上很多,让它值为TRUE即可)解决此问题。</p><p>[正文概要]</p><p>'subject 信息标题<br/>'company 发布信息的公司名称<br/>'content 发布信息的内容<br/>'address 公司地址<br/>'infomation 公司简介<br/>'note 相关说明<br/>以上值均由FORM提交,然后通过:subject=trim(Request.Form("subject"))等得到相应的值。</p><p>&lt;%<br/>'这个函数很关键!---------------------------<br/>Function sql(a,b,sqls)<br/>if b&lt;&gt;"" then '如果客户端没有提交此值,则不会产生相应的SQL语句。<br/>sqls=sqls &amp; " and " &amp; a &amp; " like '%" &amp; b &amp; "%'"<br/>end if<br/>sql=sqls<br/>End Function<br/>'-----------------调用数据库<br/>Set conn=Server.CreateObject("ADODB.Connection")<br/>DBpath=Server.MapPath("/database/mydb.mdb")<br/>Conn.Open "driver={Microsoft Access Driver (*.mdb)};pwd=;dbq=" &amp; DBpath<br/>Set rs=Server.CreateObject("ADODB.Recordset")<br/>sqls="select * from mytable where 1=1 "<br/>'以下调用上面的函数即可,可以很多个调用(理论上是任意)<br/>sqls=sql("subject",subject,sqls)<br/>sqls=sql("company",company,sqls)<br/>sqls=sql("content",content,sqls)<br/>sqls=sql("address",address,sqls)<br/>sqls=sql("infomation",infomation,sqls)<br/>sqls=sql("note",note,sqls)<br/>sqls=sqls &amp; " order by id desc"<br/>rs.open sqls,conn,3,2<br/>%&gt;</p>

该用户从未签到

升级  30.8%

96
 楼主| 发表于 2006-2-26 10:56:08 | 只看该作者
<p><strong>无限级分类</strong></p><hr/><p>比较简单的一个页面,类似csdn论坛在ns下的左边列表</p><p>描述:</p><p>1.</p><p>数据名:tree.mdb</p><p>表名:tree</p><p>表结构:id(自编) pid(数字) content(文本) link(文本)</p><p>2.</p><p>图片:endnode.gif collapsed.gif back.gif(均在img目录下,可自行修改)</p><p>3.</p><p>代码:</p><p>&lt;!--#include file="conn.inc"--&gt;<br/>&lt;HTML&gt;<br/>&lt;HEAD&gt;<br/>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br/>&lt;META NAME="GENERATOR" Content="Microsoft FrontPage 4.0"&gt;<br/>&lt;TITLE&gt;无限级列表&lt;/TITLE&gt;<br/>&lt;!--<br/>by fason(2003-5-12)<br/>--&gt;<br/>&lt;style&gt;<br/>.node{<br/>font-size:12px;<br/>padding:0 0 2 0;<br/>margin-left:10;<br/>height:22px;<br/>}<br/>img{<br/>vertical-align:middle;<br/>width:11px;<br/>height:11px;<br/>}<br/>a{text-decoration:none;font-size:12px;color:black}<br/>.deeptree{<br/>width:100%;<br/>height:100%;<br/>backgound-color:#f2f2f2;<br/>overflow:auto;<br/>}</p><p>&lt;/style&gt;<br/>&lt;/HEAD&gt;<br/>&lt;BODY bgcolor=#f2f2f2&gt;<br/>&lt;nobr&gt;<br/>&lt;div class="deeptree"&gt;<br/>&lt;%<br/>newid=Request.QueryString("id")<br/>if newid="" or CInt(newid)&lt;0 then newid=0<br/>if isNumeric(newid) then<br/>listTree(CInt(newid))<br/>end if</p><p>function listTree(id)<br/>dim rs<br/>dim imgFolder,imgFile<br/>dim link,href,parentHref<br/>dim target,ahref,click<br/>target="main" '所指定的框架名<br/>imgFolder="img/" '默认路径<br/>set rs=conn.execute("select *,(select count(*) from tree where pid = T.id) as children,(select pid from tree where id="&amp;id&amp;") as parent from tree T where pid="&amp;id)<br/>if not rs.eof then<br/>parentHref=Request.ServerVariables("URL")&amp;"?id="&amp;rs("parent")<br/>if id&lt;&gt;0 then Response.Write "&lt;div class='node' nowrap=true&gt;&lt;a href='"&amp;parentHref&amp;"' onfocus='blur()'&gt;&lt;img src='"&amp;imgFolder&amp;"back.gif' border=0&gt;&lt;/a&gt; &lt;a href='"&amp;parentHref&amp;"'&gt;上一级目录&lt;/a&gt;&lt;/div&gt;"&amp;VbCrLf<br/>do while not rs.eof <br/>if rs("children")&gt;0 then<br/>img=imgFolder+"collapsed.gif"<br/>href=Request.ServerVariables("URL")&amp;"?id="&amp;rs("id")<br/>click="onclick=""location.href='"&amp;href&amp;"'"""<br/>else<br/>img=imgFolder+"endnode.gif"<br/>href="javascript:void(0)"<br/>end if<br/>if not isNull(rs("link")) then<br/>ahref=rs("link")<br/>else<br/>ahref="javascript:void(0)"<br/>target="_self"<br/>end if<br/>link="&lt;a href='"&amp;ahref&amp;"' target='"&amp;target&amp;"' title='"&amp;rs("content")&amp;"' "&amp;click&amp;"&gt;"&amp;rs("content")&amp;"&lt;/a&gt;"<br/>Response.Write "&lt;div class='node' nowrap=true&gt;&lt;a href='"&amp;href&amp;"' onfocus='blur()'&gt;&lt;img src='"&amp;img&amp;"' border=0&gt;&lt;/a&gt; "&amp;link&amp;"&lt;/div&gt;"<br/>rs.movenext<br/>loop<br/>rs.close:set rs=nothing<br/>end if<br/>end function<br/>conn.close:set conn=nothing<br/>%&gt;</p><p>&lt;/div&gt;<br/>&lt;/nobr&gt;<br/>&lt;/BODY&gt;<br/>&lt;/HTML&gt;</p><p><br/>conn.inc:</p><p>&lt;%<br/>dim conn<br/>set conn = Server.CreateObject("ADODB.Connection")<br/>conn.Open "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" &amp; Server.mappath("tree.mdb") &amp; "ersist Security Info=False"<br/>%&gt;</p><p>4.测试:ie6,ns7,mozilla下测试通过</p>

该用户从未签到

升级  30.8%

97
 楼主| 发表于 2006-2-26 10:56:33 | 只看该作者
<p><strong>无组件的数据库的备份与还原</strong></p><hr/><p>看过数据库的备份与还原。大多数都是用组件来完成的。其实可通过sql语句来完成。<br/>由于时间关系,未对参数进行验证和界面美化。代码仅供参考。<br/>共计4个文件:下载地址:http://ad.ceh.com.cn/sql.rar<br/>conn.asp<br/>&lt;%<br/>conn="rovider=SQLOLEDB.1ersist Security Info=false;Server=127.0.0.1;UID=sa;pwd=www.zhi.net;database=master"<br/>function rec(rs,sql)<br/>set rs = server.CreateObject("ADODB.Recordset")<br/>rs.Activeconnection = conn<br/>rs.Source = sql<br/>rs.CursorType = 0<br/>rs.Cursorlocation = 3<br/>rs.LockType = 1<br/>rs.Open<br/>if rs.eof and rs.bof then<br/>rec= false<br/>else<br/>rec= true<br/>end if<br/>end function<br/>function cmd(sql)<br/>dim cmd1<br/>set cmd1 = server.CreateObject("ADODB.Command")<br/>cmd1.ActiveConnection = conn<br/>cmd1.CommandText = sql<br/>cmd1.CommandType = 1<br/>cmd1.CommandTimeout = 0<br/>cmd1.Prepared = true<br/>cmd1.Execute()<br/>end function<br/>function cdb(rs)<br/>rs.close()<br/>set rs=nothing<br/>end function<br/>%&gt;<br/>dev.asp<br/>&lt;!--#include file="conn.asp"--&gt;<br/>&lt;%<br/>if request("AddDev") &lt;&gt; "" then<br/>sql="select name,phyname from master..sysdevices where status=16 and name='"&amp;request("devname")&amp;"'"<br/>rec chk,sql<br/>if chk.eof and chk.bof then<br/>sql = "sp_addumpdevice 'disk','"&amp;request("devname")&amp;"','"&amp;request("phyname")&amp;"'"<br/>cmd sql<br/>response.Write "&lt;script language=javascript&gt;window.location=reload;&lt;/script&gt;"<br/>else<br/>response.Write "&lt;script language=javascript&gt;alert('数据库中已存在"&amp;request("devname")&amp;"设备!');window.location='cmd.asp';&lt;/script&gt;"<br/>end if<br/>end if<br/>if request("deldev") &lt;&gt; "" then<br/>sql = "sp_dropdevice '"&amp;request("devname")&amp;"'"<br/>cmd sql<br/>response.Write "&lt;script language=javascript&gt;window.location=reload;&lt;/script&gt;"<br/>end if<br/>rec li,"select name,phyname from master..sysdevices where status=16"<br/>if li.eof and li.bof then<br/>response.Write "&lt;font color=#ff0000&gt;请新建备份设备用来备份还原数据库&lt;/font&gt;"<br/>else<br/>%&gt;&lt;style type="text/css"&gt;<br/>&lt;!--<br/>body {<br/>margin-left: 0px;<br/>margin-top: 0px;<br/>}<br/>--&gt;<br/>&lt;/style&gt;<br/>&lt;table width="60%" border="0" cellspacing="0"&gt;<br/>&lt;tr&gt;<br/>&lt;td width="29%"&gt;名称:&lt;/td&gt;<br/>&lt;td width="71%"&gt;位置:&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;%<br/>i=0<br/>while not li.eof <br/>i=i+1<br/>%&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&lt;%=li(0)%&gt;&lt;/td&gt;<br/>&lt;td&gt;&lt;%=li(1)%&gt; &lt;a href='dev.asp?DelDev=1&amp;devname=&lt;%=li(0)%&gt;'&gt;删除此设备&lt;/a&gt;&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;%<br/>li.movenext<br/>wend<br/>response.Write "&lt;script language=javascript&gt;top.document.all.dev.height='"&amp;(i+1)*25&amp;"';&lt;/script&gt;"<br/>cdb li<br/>%&gt;<br/>&lt;/table&gt;<br/>&lt;%<br/>end if<br/>%&gt;<br/>default.asp<br/>&lt;%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%&gt;<br/>&lt;!--#include file="conn.asp"--&gt;<br/>&lt;%<br/>'*************************************************<br/>'数据库备份与还原<br/>'编 程:魔术师·杨(MagicYang.CN)<br/>'完成日期:2004-4-11<br/>'说明:由于时间关系,未对数据做安全性验证。</p>

该用户从未签到

升级  30.8%

98
 楼主| 发表于 2006-2-26 10:56:50 | 只看该作者
'*************************************************<br/>%&gt;<br/>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br/>&lt;title&gt;数据库的备份与还原&lt;/title&gt;<br/>&lt;/head&gt;<p><br/>&lt;body&gt;<br/>&lt;%</p><p>%&gt;<br/>&lt;table width="80%" border="0" align="center"&gt;<br/>&lt;tr&gt;<br/>&lt;td width="21%" valign="top"&gt;数据库设备:&lt;/td&gt;<br/>&lt;td width="79%"&gt;<br/>&lt;iframe name="dev" src="dev.asp" width="100%" height="200" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;<br/>&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;添加设备:&lt;/td&gt;<br/>&lt;td&gt;设备名称:<br/>&lt;input name="devname" type="text" id="devname" size="10" maxlength="10"&gt;&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;td&gt;文件路径:<br/>&lt;input name="phyname" type="text" id="phyname" size="20" maxlength="50"&gt;<br/>&lt;input type="button" value="添加设备" onClick="document.all.dev.src='dev.asp?AddDev=1&amp;devname='+document.all.devname.value+'&amp;phyname='+document.all. phyname.value;"&gt;&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td valign="top"&gt;备份/还原:&lt;/td&gt;<br/>&lt;td&gt;<br/>数据库名称:<br/>&lt;%<br/>rec li,"select name from master..sysdatabases where status=16"<br/><br/>%&gt;<br/>&lt;select name="b_data"&gt;<br/>&lt;%<br/>while not li.eof <br/>response.Write "&lt;option value="&amp;li(0)&amp;"&gt;"&amp;li(0)&amp;"&lt;/option&gt;"<br/>li.movenext<br/>wend<br/>cdb li<br/>%&gt;<br/>&lt;/select&gt;&lt;br&gt;<br/>备份到设备:&lt;%<br/>rec li,"select name,phyname from master..sysdevices where status=16"<br/>%&gt;<br/>&lt;select name="b_dev"&gt;<br/>&lt;%<br/>while not li.eof<br/>response.Write "&lt;option value="&amp;li(0)&amp;"&gt;"&amp;li(0)&amp;"(文件:"&amp;li(1)&amp;")&lt;/option&gt;"<br/>li.movenext<br/>wend<br/>cdb li<br/>%&gt;<br/>&lt;/select&gt;&lt;br&gt;<br/>&lt;input name="按钮" type="button" value="备份数据库" onClick="window.location='cmd.asp?action=backup&amp;database='+document.all.b_data.value+'&amp;dev='+document.all. b_dev.value;"&gt;<br/>&amp;nbsp;<br/>&lt;input name="按钮" type="button" value="还原数据库" onClick="window.location='cmd.asp?action=RESTORE&amp;database='+document.all.b_data.value+'&amp;dev='+document.all. b_dev.value;"&gt; &lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;tr&gt;<br/>&lt;td&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;td&gt;&amp;nbsp;&lt;/td&gt;<br/>&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/>cmd.asp<br/>&lt;!--#include file="conn.asp"--&gt;<br/>&lt;%<br/>on error resume next<br/>if request("action") &lt;&gt; "" then<br/>if request("action")="backup" then<br/>sql ="BACKUP DATABASE "&amp;request("database")&amp;" To "&amp; request("dev")<br/>cmd sql<br/>if err.number &gt; 0 then<br/>response.Write "&lt;script language=javascript&gt;alert('数据库"&amp;request("database")&amp;"备份失败!');window.location='default.asp';&lt;/script&gt;"<br/>else<br/>response.Write "&lt;script language=javascript&gt;alert('数据库"&amp;request("database")&amp;"备份成功!');window.location='default.asp';&lt;/script&gt;"<br/>end if<br/>else<br/>sql ="RESTORE DATABASE "&amp;request("database")&amp;" From "&amp; request("dev")<br/>cmd sql<br/>if err.number &gt; 0 then<br/>response.Write "&lt;script language=javascript&gt;alert('数据库"&amp;request("database")&amp;"还原失败!');window.location='default.asp';&lt;/script&gt;"<br/>else<br/>response.Write "&lt;script language=javascript&gt;alert('数据库"&amp;request("database")&amp;"还原成功!');window.location='default.asp';&lt;/script&gt;"<br/>end if<br/>end if<br/>end if<br/>%&gt;</p>

该用户从未签到

升级  30.8%

99
 楼主| 发表于 2006-2-26 10:57:08 | 只看该作者
<p><strong>无组件实现文件上传/下载</strong></p><p></p><hr/><p>'==================================================================<br/>'<br/>' 用ASP实现无组件上传/下载文件<br/>'<br/>' 功能简介 <br/>' 将上传的文件数据保存到数据库中,可以处理表单中的多个上传文件的情况<br/>' 适用于各种数据库,使用ADO的方法连接数据库<br/>' 本示例中使用的是ACCESS数据库:zj.mdb<br/>' 表:tb_img(id int(自增列),path text(255) 保存上传文件的目录<br/>' ,fname text(250) 保存上传的文件名,type test(250) 保存上传文件的类型<br/>' ,img ole对象 保存上传的文件内容<br/>'<br/>' <br/>'==================================================================</p><p><br/>'==================================================================<br/>'<br/>' 上传文件的HTML页: zj_up.htm<br/>'<br/>'==================================================================<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;title&gt;文件上传保存到数据库中&lt;/title&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;form name="form1" enctype="multipart/form-data" method="post" action="zj_up.asp"&gt;<br/>&lt;p&gt;<br/>&lt;input type="file" name="file"&gt;<br/>&lt;input type="submit" name="Submit" value="上传"&gt;<br/>&lt;/p&gt;<br/>&lt;/form&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;</p><p><br/>'==================================================================<br/>'<br/>' 上传文件保存到数据库的ASP页: zj_up.asp<br/>'<br/>'==================================================================<br/>&lt;%<br/>Response.Expires=0<br/>Function f_Bin2Str(ByVal sBin)<br/>Dim iI, iLen, iChr, iRe <br/>iRe = ""<br/>If Not IsNull(sBin) Then<br/>iLen = LenB(sBin)<br/>For iI = 1 To iLen<br/>iChr = MidB(sBin, iI, 1)<br/>If AscB(iChr) &gt; 127 Then<br/>iRe = iRe &amp; Chr(AscW(MidB(sBin, iI + 1, 1) &amp; iChr))<br/>iI = iI + 1<br/>Else<br/>iRe = iRe &amp; Chr(AscB(iChr))<br/>End If<br/>Next<br/>End If <br/>f_Bin2Str = iRe<br/>End Function<br/>iConcStr = "rovider=Microsoft.Jet.OLEDB.4.0ersist Security Info=False" &amp; _ <br/>";Data Source=" &amp; server.mappath("zj.mdb")<br/>iSql="tb_img"<br/>set iRe=Server.CreateObject("ADODB.Recordset")<br/>iRe.Open iSql,iConcStr,1,3<br/>iLen=Request.TotalBytes<br/>sBin=Request.BinaryRead(iLen)<br/>iCrlf1 = ChrB(13) &amp; ChrB(10)<br/>iCrlf2 = iCrlf1 &amp; iCrlf1<br/>iLen = InStrB(1, sBin, iCrlf1) - 1<br/>iSpc = LeftB(sBin, iLen)<br/>sBin = MidB(sBin, iLen + 34)<br/>iPos1 = InStrB(sBin, iCrlf2) - 1<br/>While iPos1 &gt; 0<br/>iStr = f_Bin2Str(LeftB(sBin, iPos1))<br/>iPos1 = iPos1 + 5<br/>iPos2 = InStrB(iPos1, sBin, iSpc)<br/><br/>iPos3 = InStr(iStr, "; filename=""") + 12<br/>If iPos3 &gt; 12 Then<br/>iStr = Mid(iStr, iPos3)<br/>iPos3 = InStr(iStr, Chr(13) &amp; Chr(10) &amp; "Content-Type: ") - 2<br/>iFn = Left(iStr, iPos3)<br/>If iFn &lt;&gt; "" Then<br/>iRe.AddNew<br/>ire("path")=left(iFn,instrrev(iFn,"\")) <br/>iRe("fname") = mid(iFn,instrrev(iFn,"\")+1)<br/>iRe("type") = Mid(iStr, iPos3 + 18)<br/>iRe("img").AppendChunk MidB(sBin, iPos1, iPos2 - iPos1)<br/>iRe.Update<br/>End If<br/>End If<br/><br/>sBin = MidB(sBin, iPos2 + iLen + 34)<br/>iPos1 = InStrB(sBin, iCrlf2) - 1<br/>Wend<br/>iRe.close<br/>set iRe=Nothing<br/>%&gt;</p><p>'==================================================================<br/>'<br/>' 下载数据的ASP页: zj_down.asp<br/>'<br/>'==================================================================<br/>&lt;%<br/>Response.Buffer=true<br/>Response.Clear</p><p>iConcStr = "rovider=Microsoft.Jet.OLEDB.4.0ersist Security Info=False" &amp; _ <br/>";Data Source=" &amp; server.mappath("zj.mdb")<br/>set iRe=server.createobject("adodb.recordset")<br/>iSql="tb_img"<br/>iRe.open iSql,iconcstr,1,1<br/>Response.ContentType=ire("type")<br/>Response.BinaryWrite iRe("img")</p><p>iRe.close<br/>set iRe=Nothing<br/>%&gt;</p>

该用户从未签到

升级  30.8%

100
 楼主| 发表于 2006-2-26 10:57:36 | 只看该作者
<p><strong>加速ASP程序的显示速度</strong> </p><p></p><hr/><p>  作为一个ASP程序员,你不会怀疑提高Web应用程序性能的重要性。为了让程序运行的更快一些,你可能一直忙于优化数据库或COM组件。如果这些你都做过了,你想到过靠加快最终生成HTML代码在浏览器中的显示速度来提高性能吗?对于最终用户来说,如果页面能显示的更快,你就能赢得更多的赞誉。</p><p>  提高HTML在浏览器中显示的速度可以通过一些鲜为人知的技术来实现。 </p><p>  1.使用表格嵌套? </p><p>  在页面中建立复杂的结构,一般通过在页面中放置HTML表格来实现。如果要建立一个这样的页面:这个页面有一个顶部导航栏一个左边导航栏,一个右边的内容区。可以用一个两行两列的大表格来建立它。第一行中,合并两个列,然后插入一个顶部导航栏。第二行左边的列中,插入一个表格来显示导航按钮。右边的栏中,放置一个表格来实际内容。(见图一)这样嵌套的表格生成的代码是这样的: </p><p> &lt;TABLE BORDER="0"&gt; <br/>  &lt;TR&gt; <br/>   &lt;TD COLSPAN="2"&gt;&lt;!-- content for top nav bar --&gt;&lt;/TD&gt; <br/>  &lt;/TR&gt; <br/>  &lt;TR&gt; <br/>   &lt;TD ALIGN="LEFT" VALIGN="TOP"&gt;&lt;!-- content for left nav bar --&gt;&lt;/TD&gt; <br/>   &lt;TD ALIGN="LEFT" VALIGN="TOP"&gt;&lt;!-- content for body of page --&gt;&lt;/TD&gt; <br/>  &lt;/TR&gt; <br/> &lt;/TABLE&gt; </p><p>  但是,实际上,浏览器找到&lt;TABLE&gt;标签的时候并不是立刻把页面显示到屏幕上,除非它找到相应的结束标签&lt;/TABLE&gt;。所以,如果你的整个页面在一个表格里的话,在收到最后一个&lt;/TABLE&gt;之前,什么也不会显示出来,这样,这个页面将在整个文件全部下载以后才能被用户所看到。在页面数据量比较大的时候(比如搜索引擎的搜索结果),这个特性会导致暂时的停顿。为了防止出现这种情况,可以在制作的时候把页面分成许多小的表格。在每一个&lt;TABLE&gt;到相应的&lt;/TABLE&gt;这一部分HTML代码下载完的时候,浏览器就会把它显示出来。在访问者看来页面是渐渐的,一部分一部分,越来越多的出现在屏幕上的。感觉上,这样的页面显示速度比下载完整个文件再一次显示出来更快。 </p><p>  按照这个原则来研究前面的例子,应该把页面中整个的大表分成三个单独的表。用第一个表显示顶部的导航栏,调节它的宽度,使它足够容纳所有的内容,在一个&lt;TABLE&gt;&lt;/TABLE&gt;代码段中完成它。页面下半部分,左边第二个表排成一列。使用第三个表容纳实际内容。(见图二)因为每一个部分都是一个完整的表格,所以,每一部分代码下载后都会立刻被显示出来。这样,顶部和左边的导航栏将比页面的其它部分更显显示出来。用户会在这个时候想象页面开始下载,很快就能显示在屏幕上。这样比起让用户在较长时间内一直面对一个空白屏幕要好得多。 </p><p>  修改过的代码是这样的: </p><p> &lt;TABLE BORDER="0" WIDTH="100%"&gt; <br/>  &lt;TR&gt; <br/>   &lt;TD ALIGN="CENTER" VALIGN="TOP"&gt;&lt;!-- content for top nav bar --&gt;&lt;/TD&gt; <br/>  &lt;/TR&gt; <br/> &lt;/TABLE&gt; <br/> &lt;TABLE BORDER="0" ALIGN="LEFT"&gt; <br/>  &lt;TR&gt; <br/>   &lt;TD ALIGN="LEFT" VALIGN="TOP"&gt;&lt;!-- content for left nav bar --&gt;&lt;/TD&gt; <br/>  &lt;/TR&gt; <br/> &lt;/TABLE&gt; <br/> &lt;TABLE BORDER="0"&gt; <br/>  &lt;TR&gt; <br/>   &lt;TD ALIGN="LEFT" VALIGN="TOP"&gt;&lt;!-- content for page body --&gt;&lt;/TD&gt; <br/>  &lt;/TR&gt; <br/> &lt;/TABLE&gt; </p><p>  2.也要记住关闭其他的标记 </p><p>  在上面的例子中,我们仅仅早一些关闭&lt;TABLE&gt;标记,就能让页面在浏览器显示的更快些。以此类推,还有一些类似的标记也有同样的特性。 </p><p>  比如产生列表框和组合框&lt;OPTION&gt;标记和产生列表项的&lt;LI&gt;标记。通常,ASP程序员存取数据库,并把数据送入通过&lt;OPTION&gt;建立的列表框或组合框中,这时候在代码中写上一个关闭&lt;OPTION&gt;标记,这样简单的改变也能使页面在浏览器中显示的更快。 </p><p>  不要使用这样的代码: </p><p> Do while not objRS.EOF <br/>  strOptionList = strOptionList &amp; "&lt;OPTION VALUE=""" &amp; objRS("ID") &amp;_"""&gt;"&amp; _objRS("roductName") <br/>  objRS.MoveNext <br/> Loop </p><p> Response.Write "&lt;SELECT SIZE=""1""&gt;" &amp; strOptionList &amp; "&lt;/SELECT&gt;" </p><p>  要使用这样的代码: </p><p>  Do while not objRS.EOF <br/>   strOptionList = strOptionList &amp; "&lt;OPTION VALUE=""" &amp; objRS("ID") &amp; _ """&gt;" &amp; objRS("roductName") &amp; "&lt;/OPTION&gt;" <br/>   objRS.MoveNext <br/>  Loop </p><p>  Response.Write "&lt;SELECT SIZE=""1""&gt;" &amp; strOptionList &amp; "&lt;/SELECT&gt;" </p><p>  不要使用这样的代码: </p><p>  &lt;UL&gt; <br/>  &lt;LI&gt;Apples <br/>  &lt;LI&gt;Oranges <br/>  &lt;LI&gt;Bananas <br/>  &lt;/UL&gt; </p><p>  使用这样的代码: </p><p>  &lt;UL&gt; <br/>   &lt;LI&gt;Apples&lt;/LI&gt; <br/>   &lt;LI&gt;Oranges&lt;/LI&gt; <br/>   &lt;LI&gt;Bananas&lt;/LI&gt; <br/>  &lt;/UL&gt; </p><p>  现在看看,你的页面在浏览器中是不是显示的快了? </p><p>  请不要轻视这些改变对提高ASP程序性能的重要性。也许,在你能找到的“技巧与提示”一类的书或在线资料中,很少提到过通过优化HTML代码来使你的程序运行的更快。但是,在实际中应用这些技术,确实能使程序性能得到很大的提高。</p>
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

GMT+8, 2025-7-5 22:45

Software by Discuz! X3.2

© 2001-2013 SKIN BY DSVUE

快速回复 返回顶部 返回列表