<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ASP函数 &#8211; 九创科技</title>
	<atom:link href="https://www.3code.cn/tag/asp-function-tag/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.3code.cn</link>
	<description>Wordpress外贸企业主题, Wp企业主题, wordpress企业主题, wordpress主题定制, WORDPRESS外贸网站建设SEO</description>
	<lastBuildDate>Fri, 12 Mar 2010 10:23:45 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>ASP网站漏洞解析及黑客入侵防范方法(2)</title>
		<link>https://www.3code.cn/asp-hk-2/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Fri, 12 Mar 2010 10:23:45 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<category><![CDATA[asp数据库]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1592</guid>

					<description><![CDATA[为你的数据库文件名称起个复杂的非常规的名字，并把它放在几层目录下。所谓 “非常规”，打个比方说，比如有个数据库要保存的是有关书籍的信息，可不要给它起个“book.mdb”的名字，而要起个怪怪的名称，比如d34ksfslf.mdb，并把它放在如./kdslf/i44/studi/的几层目录下，这样黑客要想通过猜的方式得到你的Access数据库文件就难上加难了。]]></description>
										<content:encoded><![CDATA[<p>6、数据库下载漏洞</p>
<p>  　　攻击原理：在用Access做后台数据库时，如果有人通过各种方法知道或者猜到了服务器的Access数据库的路径和数据库名称，那么他也能够下载这个Access数据库文件，这是非常危险的。</p>
<p>  　　防范技巧：</p>
<p>  　　（1）为你的数据库文件名称起个复杂的非常规的名字，并把它放在几层目录下。所谓 “非常规”，打个比方说，比如有个数据库要保存的是有关书籍的信息，可不要给它起个“book.mdb”的名字，而要起个怪怪的名称，比如d34ksfslf.mdb，并把它放在如./kdslf/i44/studi/的几层目录下，这样黑客要想通过猜的方式得到你的Access数据库文件就难上加难了。</p>
<p>  　　（2）不要把数据库名写在程序中。有些人喜欢把DSN写在程序中，比如：</p>
<p>  　　DBPath = Server.MapPath（“cmddb.mdb”）<br />
  　　conn.Open “driver={Microsoft Access Driver （*.mdb）}；dbq=” &#038; DBPath</p>
<p>  　　假如万一给人拿到了源程序，你的Access数据库的名字就一览无余了。因此建议你在ODBC里设置数据源，再在程序中这样写：</p>
<p>  　　conn.open“shujiyuan”</p>
<p>  　　（3）使用Access来为数据库文件编码及加密。首先在“工具→安全→加密/解密数据库”中选取数据库（如：employer.mdb），然后按确定，接着会出现“数据库加密后另存为”的窗口，可存为：“employer1.mdb”。</p>
<p>  　　要注意的是，以上的动作并不是对数据库设置密码，而只是对数据库文件加以编码，目的是为了防止他人使用别的工具来查看数据库文件的内容。</p>
<p>  　　接下来我们为数据库加密，首先打开经过编码了的 employer1.mdb，在打开时，选择“独占”方式。然后选取功能表的“工具→安全→设置数据库密码”，接着输入密码即可。这样即使他人得到了 employer1.mdb文件，没有密码他也是无法看到 employer1.mdb中的内容。</p>
<p>  　　7、防范远程注入攻击</p>
<p>  　　这类攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随便的改变要提交的数据值已达到攻击目的.又如:COOKIES 的伪造,这一点更值得引起程序编写者或站长的注意，不要使用COOKIES来做为用户验证的方式,否则你和把钥匙留给贼是同一个道理.</p>
<p>  　　比如:</p>
<p>  　　If trim(Request. cookies (&#8220;uname&#8221;))=&#8221;fqy&#8221; and Request.cookies(&#8220;upwd&#8221;) =”fqy#e3i5.com” then<br />
  　　……..more………<br />
  　　End if</p>
<p>  　　我想各位站长或者是喜好写程序的朋友千万别出这类错误,真的是不可饶恕.伪造COOKIES 都多少年了，你还用这样的就不能怪别人跑你的密码.涉及到用户密码或者是用户登陆时,你最好使用session 它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不可能.例:</p>
<p>  　　if not (rs.BOF or rs.eof) then<br />
  　　login=&#8221;true&#8221;<br />
  　　Session(&#8220;username&#8221;&#038;sessionID) = Username<br />
  　　Session(&#8220;password&#8221;&#038; sessionID) = Password<br />
  　　‘Response.cookies(“username”)= Username<br />
  　　‘Response.cookies(“Password”)= Password</p>
<p>  　　下面我们来谈谈如何防范远程注入攻击,一般的攻击都是将单表提交文件拖到本地,将Form ACTION=”chk.asp” 指向你服务器中处理数据的文件即可.如果你全部的数据过滤都在单表页上，那么恭喜你，你将已经被脚本攻击了.</p>
<p>  　　怎么才能制止这样的远程攻击?好办,请看代码如下: 程序体(9)</p>
<p>  　　＜%<br />
  　　server_v1=Cstr(Request.ServerVariables(&#8220;HTTP_REFERER&#8221;))<br />
  　　server_v2=Cstr(Request.ServerVariables(&#8220;SERVER_NAME&#8221;))<br />
  　　if mid(server_v1,8,len(server_v2))＜＞server_v2 then<br />
  　　response.write &#8220;＜br＞＜br＞＜center>&#8221;<br />
  　　response.write &#8221; &#8221;<br />
  　　response.write &#8220;你提交的路径有误，禁止从站点外部提交数据请不要乱改参数！&#8221;<br />
  　　response.write &#8221;</p>
<p>  &#8221;<br />
  　　response.end<br />
  　　end if<br />
  　　%></p>
<p>  ‘个人感觉上面的代码过滤不是很好，有一些外部提交竟然还能堂堂正正的进来,于是再写一个.</p>
<p>  　　‘这个是过滤效果很好,建议使用.</p>
<p>  　　if instr(request.servervariables(&#8220;http_referer&#8221;),&#8221;http://&#8221;&#038;request.servervariables(&#8220;host&#8221;) )<1 then response.write "处理 URL 时服务器上出错。
  
  　　如果您是在用任何手段攻击服务器，那你应该庆幸，你的所有操作已经被服务器记录，我们会第一时间通知公安局与国家安全部门来调查你的IP. "
  
  　　response.end
  　　end if
  　　程序体(9)
  
  　　本以为这样就万事大吉了，在表格页上加一些限制,比如maxlength啦,等等..但天公就是那么不作美,你越怕什么他越来什么.你别忘了,攻击者可以突破sql注入攻击时输入框长度的限制.写一个SOCKET程序改变HTTP_REFERER？我不会。网上发表了这样一篇文章：
  
  　　------------len.reg-----------------
  　　Windows Registry Editor Version 5.00
  　　[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\扩展(&#038;E)]
  　　@="C:\Documents and Settings\Administrator\桌面\len.htm"
  　　"contexts"=dword:00000004
  　　-----------end----------------------
  　　-----------len.htm------------------
  　　
  　　----------end-----------------------
  
  　　用法:先把len.reg导入注册表(注意文件路径)
  
  　　然后把len.htm拷到注册表中指定的地方.
  
  　　打开网页,光标放在要改变长度的输入框上点右键,看多了一个叫扩展的选项了吧
  
  　　单击搞定! 后记:同样的也就可以对付那些限制输入内容的脚本了.
  
  　　怎么办？我们的限制被饶过了，所有的努力都白费了？不，举起你de键盘，说不。让我们继续回到脚本字符的过滤吧，他们所进行的注入无非就是进行脚本攻击。我们把所有的精力全都用到ACTION以后的页面吧，在chk.asp页中，我们将非法的字符全部过滤掉，结果如何？我们只在前面虚晃一枪，叫他们去改注册表吧，当他们改完才会发现，他们所做的都是那么的徒劳。
</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP网站漏洞解析及黑客入侵防范方法(1)</title>
		<link>https://www.3code.cn/asp-hk/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Fri, 12 Mar 2010 10:21:32 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<category><![CDATA[asp安全]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1590</guid>

					<description><![CDATA[由于ASP的方便易用，越来越多的网站后台程序都使用ASP脚本语言。但是，由于ASP本身存在一些安全漏洞，稍不小心就会给黑客提供可乘之机。事实上，安全不仅是网管的事，编程人员也必须在某些安全细节上注意，养成良好的安全习惯，否则会给自己的网站带来巨大的安全隐患。目前，大多数网站上的ASP程序有这样那样的安全漏洞，但如果编写程序的时候注意一点的话，还是可以避免的。]]></description>
										<content:encoded><![CDATA[<p>如何更好的达到防范黑客攻击，本人提一下个人意见！第一，免费程序不要真的就免费用，既然你可以共享原码，那么攻击者一样可以分析代码。如果在细节上注意防范，那样你站点的安全性就大大的提高了。即使出现了SQL Injection这样的漏洞，攻击者也不可能马上拿下你的站点。</p>
<p>  　　由于ASP的方便易用，越来越多的网站后台程序都使用ASP脚本语言。但是，由于ASP本身存在一些安全漏洞，稍不小心就会给黑客提供可乘之机。事实上，安全不仅是网管的事，编程人员也必须在某些安全细节上注意，养成良好的安全习惯，否则会给自己的网站带来巨大的安全隐患。目前，大多数网站上的ASP程序有这样那样的安全漏洞，但如果编写程序的时候注意一点的话，还是可以避免的。</p>
<p>  　　1、用户名与口令被破解</p>
<p>  　　攻击原理：用户名与口令，往往是黑客们最感兴趣的东西，如果被通过某种方式看到源代码，后果是严重的。</p>
<p>  　　防范技巧：涉及用户名与口令的程序最好封装在服务器端，尽量少在ASP文件里出现，涉及与数据库连接的用户名与口令应给予最小的权限。出现次数多的用户名与口令可以写在一个位置比较隐蔽的包含文件中。如果涉及与数据库连接，在理想状态下只给它以执行存储过程的权限，千万不要直接给予该用户修改、插入、删除记录的权限。</p>
<p>  　　2、验证被绕过</p>
<p>  　　攻击原理：现在需要经过验证的ASP程序大多是在页面头部加一个判断语句，但这还不够，有可能被黑客绕过验证直接进入。<br />
  　　防范技巧：需要经过验证的ASP页面，可跟踪上一个页面的文件名，只有从上一页面转进来的会话才能读取这个页面。</p>
<p>  　　3、inc文件泄露问题</p>
<p>  　　攻击原理：当存在ASP的主页正在制作且没有进行最后调试完成以前，可以被某些搜索引擎机动追加为搜索对象。如果这时候有人利用搜索引擎对这些网页进行查找，会得到有关文件的定位，并能在浏览器中查看到数据库地点和结构的细节，并以此揭示完整的源代码。</p>
<p>  　　防范技巧：程序员应该在网页发布前对它进行彻底的调试；安全专家则需要加固ASP文件以便外部的用户不能看到它们。首先对.inc文件内容进行加密，其次也可以使用.asp文件代替.inc文件使用户无法从浏览器直接观看文件的源代码。inc文件的文件名不要使用系统默认的或者有特殊含义容易被用户猜测到的名称，尽量使用无规则的英文字母。</p>
<p>  　　4、自动备份被下载</p>
<p>  　　攻击原理：在有些编辑ASP程序的工具中，当创建或者修改一个ASP文件时，编辑器自动创建一个备份文件，比如：UltraEdit就会备份一个.bak文件，如你创建或者修改了some.asp，编辑器会自动生成一个叫some.asp.bak文件，如果你没有删除这个bak文件，攻击者可以直接下载some.asp.bak文件，这样some.asp的源程序就会被下载。</p>
<p>  　　防范技巧：上传程序之前要仔细检查，删除不必要的文档。对以BAK为后缀的文件要特别小心。</p>
<p>  　　5、特殊字符</p>
<p>  　　攻击原理：输入框是黑客利用的一个目标，他们可以通过输入脚本语言等对用户客户端造成损坏；如果该输入框涉及数据查询，他们会利用特殊查询语句，得到更多的数据库数据，甚至表的全部。因此必须对输入框进行过滤。但如果为了提高效率仅在客户端进行输入合法性检查，仍有可能被绕过。</p>
<p>  　　防范技巧：在处理类似留言板、BBS等输入框的ASP程序中，最好屏蔽掉HTML、JavaScript、VBScript语句，如无特殊要求，可以限定只允许输入字母与数字，屏蔽掉特殊字符。同时对输入字符的长度进行限制。而且不但要在客户端进行输入合法性检查，同时要在服务器端程序中进行类似检查。 </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP取出HTML里面的图片地址的函数</title>
		<link>https://www.3code.cn/asp-html-img/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Fri, 12 Mar 2010 10:18:19 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<category><![CDATA[ASP字符串]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1588</guid>

					<description><![CDATA[以下是取出HTML里面的图片地址的函数：主要原理就是用正则判断 <img> 的<src>属性。这在采集程序中将非常有用。]]></description>
										<content:encoded><![CDATA[<p>以下是取出HTML里面的图片地址的函数：</p>
<p>主要原理就是用正则判断 &lt;img&gt; 的&lt;src&gt;属性。这在采集程序中将非常有用。<br />
<strong><br />
函数如下：<br />
</strong><br />
以下是引用片段：<br />
Function ShowPic(str)<br />
Set objRegExp = New Regexp&#8217;设置配置对象<br />
objRegExp.IgnoreCase = True&#8217;忽略大小写<br />
objRegExp.Global = True&#8217;设置为全文搜索<br />
objRegExp.Pattern = &#8220;&lt;img.+?&gt;&#8221;<br />
<strong>&#8216;为了确保能准确地取出图片地址所以分为两层配置：首先找到里面的&lt;img&gt;标签，然后再取出里面的图片地址后面的getimgs函数就是实现后一个功能的。 </strong><br />
strs=trim(str)<br />
Set Matches =objRegExp.Execute(strs)&#8217;开始执行配置<br />
For Each Match in Matches<br />
RetStr = RetStr &amp;getimgs( Match.Value )&#8217;执行第二轮的匹配<br />
Next<br />
ShowPic = RetStr<br />
End Function<br />
Function getimgs(str)<br />
getimgs=&#8221;&#8221;<br />
Set objRegExp1 = New Regexp<br />
objRegExp1.IgnoreCase = True<br />
objRegExp1.Global = True<br />
objRegExp1.Pattern = &#8220;http://.+?&#8221;&#8221;&#8221;&#8216;取出里面的地址<br />
set mm=objRegExp1.Execute(str)<br />
For Each Match1 in mm<br />
getimgs=getimgs&amp;left(Match1.Value,len(Match1.Value)-1)&amp;&#8221;||&#8221;&#8216;把里面的地址串起来备用<br />
next<br />
End Function<br />
&#8216;取得图片内容<br />
function getHTTPPage(url)<br />
on error resume next<br />
dim http<br />
set http=server.createobject(&#8220;MSXML2.XMLHTTP&#8221;)&#8217;使用xmlhttp的方法来获得图片的内容<br />
Http.open &#8220;GET&#8221;,url,false<br />
Http.send()<br />
if Http.readystate&lt;&gt;4 then<br />
exit function<br />
end if<br />
getHTTPPage=Http.responseBody<br />
set http=nothing<br />
if err.number&lt;&gt;0 then err.Clear<br />
end function<br />
&#8216;保存图片<br />
function saveimage(from,tofile)<br />
dim geturl,objStream,imgs<br />
geturl=trim(from)<br />
imgs=gethttppage(geturl)&#8217;取得图片的具休内容的过程<br />
Set objStream = Server.CreateObject(&#8220;ADODB.Stream&#8221;)&#8217;建立ADODB.Stream对象，必须要ADO 2.5以上版本<br />
objStream.Type =1&#8217;以二进制模式打开<br />
objStream.Open<br />
objstream.write imgs&#8217;将字符串内容写入缓冲<br />
objstream.SaveToFile server.mappath(tofile),2&#8217;-将缓冲的内容写入文件<br />
objstream.Close()&#8217;关闭对象<br />
set objstream=nothing<br />
end function</p>
<p><strong>&#8216;调用实例 </strong><br />
Dim strpic,i,fname<br />
strpic = ShowPic(&#8220;&lt;DIV align=center&gt;&lt;IMG src=&#8221;&#8221;http://img.knowsky.com/img/knowskylogo.gif&#8221;&#8221; border=0&gt;&lt;/DIV&gt;&#8221;)<br />
strpic = Split(strpic,&#8221;||&#8221;)<br />
If UBound(strpic) &gt; 0 Then<br />
For i = 0 To UBound(strpic) &#8211; 1<br />
&#8216;保存图片<br />
fname=cstr(i&amp;mid(strpic(i),instrrev(strpic(i),&#8221;.&#8221;)))<br />
saveimage(strpic(i),fname)<br />
Next<br />
Else<br />
End If</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP函数库</title>
		<link>https://www.3code.cn/asp-functions-9/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Fri, 12 Mar 2010 10:13:39 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1584</guid>

					<description><![CDATA[ASP函数库]]></description>
										<content:encoded><![CDATA[<p>&#8216;**************************************************<br />
&#8216;函数ID：0043[解密字符加解密]<br />
&#8216;函数名：exmw<br />
&#8216;作 用：解密字符加解密<br />
&#8216;参 数：nmw  &#8212;- 加密的字符<br />
&#8216;返回值：解密加密后的字符<br />
&#8216;示 例：<br />
&#8216;**************************************************<br />
Public Function exmw(ByVal nmw)<br />
exmw=&#8221;&#8221;<br />
On Error GoTo 0<br />
On Error Resume Next<br />
Dim keya,keyb,newStr,temp<br />
nmw=DecodeCookie(nmw)<br />
keya=Mid(nmw,2,1)<br />
keyb=Mid(nmw,1,1)<br />
bLowChr=ChrB(AscB(MidB(keya, 1, 1)) Xor 128)<br />
bHigChr=ChrB(AscB(MidB(keya, 2, 1)) Xor 18)<br />
keya=bLowChr &amp; bHigChr<br />
bLowChr=ChrB(AscB(MidB(keyb, 1, 1)) Xor 100)<br />
bHigChr=ChrB(AscB(MidB(keyb, 2, 1)) Xor 20)<br />
keyb=bLowChr &amp; bHigChr<br />
Str=StrReverse(Mid(nmw,3,len(nmw)))<br />
newStr=&#8221;&#8221;<br />
temp=&#8221;&#8221;<br />
For i=1 to len(Str)<br />
temp=Mid(Str,i,1)<br />
bLowChr=AscB(MidB(temp, 1, 1)) Xor asc(keya)<br />
bHigChr=AscB(MidB(temp, 2, 1)) Xor asc(keyb)<br />
newStr=newStr &amp; ChrB(bLowChr) &amp; ChrB(bHigChr)<br />
Next<br />
If Err.Number = 0 Then<br />
exmw=newStr<br />
End If<br />
On Error GoTo 0<br />
End Function<br />
&#8216;**************************************************<br />
&#8216;函数ID：0044[创建数据表]<br />
&#8216;函数名：CreatTable<br />
&#8216;作 用：创建数据表<br />
&#8216;参 数：ConnStrs    &#8212;- 数据库链接字串<br />
&#8216;参 数：Tabnamestr  &#8212;- 数据表名称<br />
&#8216;参 数：CvArrstr    &#8212;- 字段表 (写法： Fname1#Type#Len#Defvalue|Fname1#Type#Len#Defvalue|&#8230;) 最后一个不要写“|”<br />
&#8216;参 数：SqlType     &#8212;- Sql语句类型 (0 Access 1 Mssqlserver)<br />
&#8216; Fname,Type,Len,Defvalue 说明：字段名称,字段类型,字段长度,默认值<br />
&#8216;字段类型 Type C/c 字符 T/t 文本 I/i 二进制 D/d 日期 M/m 关键字(字符型) A/a 关键字自动编号(数值型) N/n 数值(float) Z/z 数值(int)<br />
&#8216;返回值：如果建立成功返回 True 否则 False<br />
&#8216;示 例：CreatTable(basicDB(3),&#8221;cs&#8221;,&#8221;fa#t##|fb#c#20#a|fc#n##5&#8243;,0)<br />
&#8216;**************************************************<br />
Public Function CreatTable(ByVal ConnStrs,ByVal Tabnamestr,ByVal CvArrstr,ByVal SqlType)<br />
CreatTable=False<br />
On Error GoTo 0<br />
On Error Resume Next<br />
Dim filsarry,NeFilarry,Filstr,spfstr,templx,def_kh_l,def_kh_r,TempSqlStr<br />
def_kh_l=&#8221;&#8221;<br />
def_kh_r=&#8221;&#8221;<br />
Filstr=&#8221;&#8221;<br />
spfstr=&#8221;&#8221;<br />
TempSqlStr=&#8221;&#8221;<br />
filsarry=Split(CvArrstr,&#8221;|&#8221;)<br />
For ai = LBound(filsarry) To UBound(filsarry)<br />
NeFilarry=Split(filsarry(ai),&#8221;#&#8221;)<br />
templx=&#8221;&#8221;<br />
If UCase(NeFilarry(1))=&#8221;C&#8221; Then templx=&#8221;varchar(&#8221; &amp; NeFilarry(2) &amp; &#8220;)&#8221;<br />
If UCase(NeFilarry(1))=&#8221;T&#8221; Then templx=&#8221;TEXT&#8221;<br />
If UCase(NeFilarry(1))=&#8221;I&#8221; Then templx=&#8221;image&#8221;<br />
If UCase(NeFilarry(1))=&#8221;D&#8221; Then templx=&#8221;datetime&#8221;<br />
If UCase(NeFilarry(1))=&#8221;M&#8221; Then templx=&#8221;varchar(&#8221; &amp; NeFilarry(2) &amp; &#8220;) NOT NULL PRIMARY KEY&#8221;<br />
If UCase(NeFilarry(1))=&#8221;A&#8221; Then templx=&#8221;Int IDENTITY (1,1) NOT NULL PRIMARY KEY&#8221;<br />
If UCase(NeFilarry(1))=&#8221;N&#8221; Then templx=&#8221;Float&#8221;<br />
If UCase(NeFilarry(1))=&#8221;Z&#8221; Then templx=&#8221;Int&#8221;<br />
If SqlType =1 Then<br />
def_kh_l=&#8221;(&#8216;&#8221;<br />
def_kh_r=&#8221;&#8216;)&#8221;<br />
End If<br />
If Trim(NeFilarry(3))&lt;&gt;&#8221;&#8221; Then templx=templx &amp;&#8221; DEFAULT &#8221; &amp; def_kh_l &amp; Trim(NeFilarry(3)) &amp; def_kh_r<br />
If ai&lt;&gt;UBound(filsarry) Then<br />
spfstr= spfstr &amp; &#8220;[&#8221; &amp; NeFilarry(0) &amp; &#8220;] &#8221; &amp; templx &amp;&#8221;,&#8221;<br />
Else<br />
spfstr= spfstr &amp; &#8220;[&#8221; &amp; NeFilarry(0) &amp; &#8220;] &#8221; &amp; templx<br />
End If<br />
Next<br />
TempSqlStr=&#8221;CREATE TABLE [&#8220;&amp;Trim(Tabnamestr)&amp;&#8221;] (&#8221; &amp; spfstr &amp; &#8220;)&#8221;<br />
set fu_Conn=server.createobject(&#8220;ADODB.Connection&#8221;)<br />
fu_Conn.open ConnStrs<br />
fu_Conn.Execute TempSqlStr<br />
fu_Conn.Close<br />
Set fu_Conn=Nothing<br />
If Err.Number = 0 Then<br />
CreatTable=True<br />
End If<br />
On Error GoTo 0<br />
End Function<br />
&#8216;**************************************************<br />
&#8216;函数ID：0045[在数据库中插入字段值]<br />
&#8216;函数名：InterTbValue<br />
&#8216;作 用：创建数据表<br />
&#8216;参 数：ConnStrs    &#8212;- 数据库链接字串<br />
&#8216;参 数：Tabnamestr  &#8212;- 数据表名称<br />
&#8216;参 数：CvArrstr    &#8212;- 字段表 (写法： Fname1#Value|Fname2#Value|&#8230;) 最后一个不要写“|”<br />
&#8216;参 数：SqlType     &#8212;- Sql语句类型 (0 Access 1 Mssqlserver)<br />
&#8216; Fname,Value 说明：字段名称,字段值<br />
&#8216;返回值：如果插入成功返回 True 否则 False<br />
&#8216;示 例：InterTbValue(basicDB(3),&#8221;cs&#8221;,&#8221;fa#t|fb#c|fc#n#&#8221;)<br />
&#8216;**************************************************<br />
Public Function InterTbValue(ByVal ConnStrs,ByVal Tabnamestr,ByVal CvArrstr,ByVal SqlType)<br />
InterTbValue=False<br />
On Error GoTo 0<br />
On Error Resume Next<br />
Dim def_kh_l,def_kh_r,Filarray,Valuearray,Temparraya,Temparrayb,TempSqlStr1<br />
def_kh_l  =&#8221;&#8221;<br />
def_kh_r  =&#8221;&#8221;<br />
Temparraya=Split(CvArrstr,&#8221;|&#8221;)<br />
For fai = LBound(Temparraya) To UBound(Temparraya)<br />
Temparrayb=Split(Temparraya(fai),&#8221;#&#8221;)<br />
If (fai&lt;&gt; UBound(Temparraya)) Then<br />
Filarray  =Filarray &amp; &#8220;[&#8221; &amp; Temparrayb(0) &amp; &#8220;],&#8221;<br />
Valuearray=Valuearray &amp; &#8220;&#8216;&#8221; &amp; Temparrayb(1) &amp; &#8220;&#8216;,&#8221;<br />
Else<br />
Filarray  =Filarray &amp; &#8220;[&#8221; &amp; Temparrayb(0) &amp; &#8220;]&#8221;<br />
Valuearray=Valuearray &amp; &#8220;&#8216;&#8221; &amp; Temparrayb(1) &amp; &#8220;&#8216;&#8221;<br />
End If<br />
Next<br />
TempSqlStr1=&#8221;INSERT INTO [&#8221; &amp; Tabnamestr &amp; &#8220;] (&#8221; &amp; Filarray &amp; &#8220;) VALUES (&#8221; &amp; Valuearray &amp; &#8220;)&#8221;<br />
set fu1_Conn=server.createobject(&#8220;ADODB.Connection&#8221;)<br />
fu1_Conn.open ConnStrs<br />
fu1_Conn.Execute TempSqlStr1<br />
fu1_Conn.Close<br />
Set fu1_Conn=Nothing<br />
If Err.Number = 0 Then<br />
InterTbValue=True<br />
End If<br />
On Error GoTo 0<br />
End Function<br />
&#8216;**************************************************<br />
&#8216;函数ID：0046[Cookie防乱码写入时用]<br />
&#8216;函数名：CodeCookie<br />
&#8216;作 用：Cookie防乱码写入时用<br />
&#8216;参 数：str  &#8212;- 字符串<br />
&#8216;返回值：整理后的字符串<br />
&#8216;示 例：<br />
&#8216;**************************************************<br />
Public Function CodeCookie(str)<br />
If isNumeric(str) Then str=Cstr(str)<br />
Dim newstr<br />
newstr=&#8221;&#8221;<br />
For i=1 To Len(str)<br />
newstr=newstr &amp; ascw(mid(str,i,1))<br />
If i&lt;&gt; Len(str) Then newstr= newstr &amp; &#8220;a&#8221;<br />
Next<br />
CodeCookie=newstr<br />
End Function<br />
&#8216;**************************************************<br />
&#8216;函数ID：0047[Cookie防乱码读出时用]<br />
&#8216;函数名：DecodeCookie<br />
&#8216;作 用：Cookie防乱码读出时用<br />
&#8216;参 数：str  &#8212;- 字符串<br />
&#8216;返回值：整理后的字符串<br />
&#8216;示 例：<br />
&#8216;**************************************************<br />
Public Function DecodeCookie(str)<br />
DecodeCookie=&#8221;&#8221;<br />
Dim newstr<br />
newstr=Split(str,&#8221;a&#8221;)<br />
For i = LBound(newstr) To UBound(newstr)<br />
DecodeCookie= DecodeCookie &amp; chrw(newstr(i))<br />
Next<br />
End Function<br />
&#8216;**************************************************<br />
&#8216;函数ID：0048[检测用户名和密码是否正确]<br />
&#8216;函数名：DecodeCookie<br />
&#8216;作 用：检测用户名和密码是否正确<br />
&#8216;参 数：ConnStrs    &#8212;- 数据库链接字串<br />
&#8216;参 数：Tabnamestr  &#8212;- 数据表名称<br />
&#8216;参 数：Tumc        &#8212;- 用户名称字段名称<br />
&#8216;参 数：Cumc        &#8212;- 用户名称<br />
&#8216;参 数：TCumm       &#8212;- 用户密码字段名称<br />
&#8216;参 数：Cumm        &#8212;- 用户密码<br />
&#8216;参 数：TUid        &#8212;- 用户ID（标识）字段名称<br />
&#8216;返回值：检测成功返回 用户ID 否则 空字符串<br />
&#8216;示 例：<br />
&#8216;**************************************************<br />
Public Function CKUSMCMM(ByVal ConnStrs,ByVal Tabnamestr,ByVal Tumc,ByVal Cumc,ByVal Tumm,ByVal Cumm,ByVal TUid)<br />
CKUSMCMM=&#8221;&#8221;<br />
On Error GoTo 0<br />
On Error Resume Next<br />
Set sfu_Conn=server.createobject(&#8220;ADODB.Connection&#8221;)<br />
Set sfu_Rs  =server.createobject(&#8220;ADODB.Recordset&#8221;)<br />
sfu_Conn.open ConnStrs<br />
sfu_sql_str=&#8221;select &#8221; &amp; TUid &amp; &#8220;,&#8221; &amp; Tumc &amp; &#8220;,&#8221; &amp; Tumm &amp; &#8221; from &#8221; &amp; Tabnamestr<br />
sfu_Rs.open sfu_sql_str,sfu_Conn,1,1<br />
If sfu_Rs.RecordCount &gt;0 Then<br />
Do While Not sfu_Rs.Eof<br />
If (sfu_Rs(Tumc)=Cumc) AND (exmw(sfu_Rs(Tumm))=Cumm) Then<br />
CKUSMCMM=sfu_Rs(TUid)<br />
Exit Do<br />
End If<br />
sfu_Rs.MoveNext<br />
Loop<br />
End If<br />
sfu_Rs.Close<br />
sfu_Conn.Close<br />
Set sfu_Rs = Nothing<br />
Set sfu_Conn=Nothing<br />
On Error GoTo 0<br />
End Function<br />
&#8216;**************************************************<br />
&#8216;函数ID：0049[生成时间的整数]<br />
&#8216;函数名：GetMyTimeNumber()<br />
&#8216;作 用：生成时间的整数<br />
&#8216;参 数：lx  &#8212;- 时间整数的类型<br />
&#8216; lx=0 到分钟 lx=1 到小时 lx=2 到天 lx=3 到月<br />
&#8216;返回值：生成时间的整数值(最小到分钟)<br />
&#8216;示 例：<br />
&#8216;**************************************************<br />
Public Function GetMyTimeNumber(lx)<br />
If lx=0 Then GetMyTimeNumber=Year(Date)*12*30*24*60+Month(Date)*30*24*60+Day(Date)*24*60+Hour(Time)*60+Minute(Time)<br />
If lx=1 Then GetMyTimeNumber=Year(Date)*12*30*24+Month(Date)*30*24+Day(Date)*24+Hour(Time)<br />
If lx=2 Then GetMyTimeNumber=Year(Date)*12*30+Month(Date)*30+Day(Date)<br />
If lx=3 Then GetMyTimeNumber=Year(Date)*12+Month(Date)<br />
End Function<br />
&#8216;**************************************************<br />
&#8216;函数ID：0050[获得栏目的所有子栏目字符串并用&#8221;,&#8221;隔开]<br />
&#8216;函数名：GTLMfunLM<br />
&#8216;作 用：获得栏目的所有子栏目字符串并用&#8221;,&#8221;隔开<br />
&#8216;参 数：LMid          &#8212;- 栏目代码<br />
&#8216;参 数：ConnStrArray  &#8212;- 栏目数据链接串<br />
&#8216;返回值：子栏目字符串并用&#8221;,&#8221;隔开<br />
&#8216;示 例：hh=&#8221;数据表链接字串|父栏目字段名|栏目字段名|表名&#8221;<br />
&#8216;示 例：GTLMfunLM(22,basicDB(3) &amp; &#8220;|FTitId|TitId|TITS&#8221;)<br />
&#8216;**************************************************<br />
Public Function GTLMfunLM(ByVal LMid,ByVal ConnStrArray)<br />
Dim LMstrxx,zdbz,Nlm<br />
zdbz=False<br />
LMstrxx=&#8221;&#8221;<br />
aTempstr=GTLMfunLM_whil(LMid,ConnStrArray)<br />
LMstrxx=LMstrxx &amp; aTempstr<br />
If InStrRev(aTempstr,&#8221;,&#8221;) &gt; 0 Then<br />
Do While Not zdbz<br />
bTempstr=GTLMfunLM_Fj(aTempstr,ConnStrArray)<br />
LMstrxx=LMstrxx &amp; bTempstr<br />
If bTempstr=&#8221;&#8221; Then zdbz=True<br />
aTempstr=bTempstr<br />
Loop<br />
Else<br />
LMstrxx=aTempstr<br />
End If<br />
LMstrxx=Trim(LMstrxx)<br />
If LMstrxx&lt;&gt;&#8221;&#8221; Then If Mid(LMstrxx,Len(LMstrxx),1) = &#8220;,&#8221;  Then LMstrxx=Mid(LMstrxx,1,Len(LMstrxx)-1)<br />
GTLMfunLM=LMstrxx<br />
End Function<br />
Public Function GTLMfunLM_whil(ByVal LMidstr,ByVal ConnStrArray)<br />
ppTemp=Split(ConnStrArray,&#8221;|&#8221;)<br />
GTLMfunLM_whil=&#8221;&#8221;<br />
Set telm_Conn=server.createobject(&#8220;ADODB.Connection&#8221;)<br />
Set telm_Rs  =server.createobject(&#8220;ADODB.Recordset&#8221;)<br />
telm_Conn.open ppTemp(0)<br />
telm_sql_str=&#8221;SELECT &#8221; &amp; ppTemp(1) &amp; &#8220;,&#8221; &amp; ppTemp(2) &amp; &#8221; FROM &#8221; &amp; ppTemp(3) &amp; &#8221; WHERE (&#8221; &amp; ppTemp(1) &amp; &#8220;='&#8221; &amp; LMidstr &amp; &#8220;&#8216;)&#8221;<br />
telm_Rs.open telm_sql_str,telm_Conn,1,1<br />
If telm_Rs.RecordCount &gt;0 Then<br />
Do While Not telm_Rs.Eof<br />
GTLMfunLM_whil=GTLMfunLM_whil &amp; Trim(telm_Rs(ppTemp(2))) &amp; &#8220;,&#8221;<br />
telm_Rs.MoveNext<br />
Loop<br />
End If<br />
telm_Rs.Close<br />
telm_Conn.Close<br />
Set telm_Rs = Nothing<br />
Set telm_Conn=Nothing<br />
End Function<br />
Public Function GTLMfunLM_Fj(ByVal str,ByVal ConnStrArray)<br />
Dim templjid<br />
templjid=&#8221;&#8221;<br />
If Trim(str)&lt;&gt;&#8221;&#8221; Then<br />
fjTemp=Split(str,&#8221;,&#8221;)<br />
For i = LBound(fjTemp) To UBound(fjTemp)<br />
If Trim(fjTemp(i))&lt;&gt;&#8221;&#8221; Then<br />
templjid=templjid &amp; GTLMfunLM_whil(fjTemp(i),ConnStrArray)<br />
End If<br />
Next<br />
End If<br />
GTLMfunLM_Fj=templjid<br />
End Function</p>
<p>%&gt;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>常用的ASP函数</title>
		<link>https://www.3code.cn/%e5%b8%b8%e7%94%a8%e7%9a%84asp/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Tue, 05 Jan 2010 08:17:28 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1442</guid>

					<description><![CDATA[常用的ASP函数
1.函数array()　
功能:创建一个数组变量　
格式:array(list)　
参数:list　为数组变量中的每个数值列,中间用逗号间隔　
例子:　
<%　i　=　array　("1","2","3")　%>　
结果:　i　被赋予为数组]]></description>
										<content:encoded><![CDATA[<p><strong>常用的ASP函数<br />
1.函数array() </strong><br />
功能:创建一个数组变量<br />
格式:array(list)<br />
参数:list　为数组变量中的每个数值列,中间用逗号间隔<br />
例子:<br />
&lt;%　i　=　array　(&#8220;1&#8243;,&#8221;2&#8243;,&#8221;3&#8221;)　%&gt;<br />
结果:　i　被赋予为数组</p>
<p><strong>2.函数Cint()</strong><br />
功能:将一表达式/其它类型的变量转换成整数类型(int)<br />
格式:Cint(expression)<br />
参数:expression　是任何有效的表达式/其它类型的变量<br />
例子:<br />
&lt;%<br />
f　=　&#8221;234&#8243;<br />
response.write　cINT(f)　+　2<br />
%&gt;<br />
结果:　236<br />
函数Cint()将字符&#8221;234&#8243;转换　成整数234.如果表达式为空,　或者无效时,返回值为0;</p>
<p><strong>3.函数:Creatobject()</strong><br />
功能:创建及返回一个ActiveX对象.<br />
格式:Creatobject(obname)<br />
参数bname　是对象的名称<br />
例子:<br />
&lt;%<br />
Set　con　=　Server.CreateObject(&#8220;ADODB.Connection&#8221;)<br />
%&gt;<br />
结果:</p>
<p><strong>4.函数Cstr() </strong><br />
功能:将一表达式/其它类型的变量转换成字符类型(string)<br />
格式:Cstr(expression)<br />
参数:expression是任何有效的表达式/其它类型的变量<br />
例子:<br />
&lt;%<br />
s　=　3　+　2<br />
response.write　&#8221;The　result　is:　&#8221;　&amp;　cStr(s)<br />
%&gt;<br />
结果:函数Cstr()将整数　5　转换　成字符&#8221;5&#8243;.</p>
<p><strong>5.函数Date() </strong><br />
功能:返回当前系统(server端)的日期<br />
格式:　Date()<br />
参数:无<br />
例子&lt;%　date　()　%&gt;<br />
结果:05/10/00<br />
5.1 Instr()<br />
函数返回字符或字符串在另一个字符串中第一次出现的位置.<br />
表达式 Instr([start, ] strToBeSearched, strSearchFor [, compare])<br />
允许数据类型: Start为搜索的起始值，strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符.compare比较方式（详细见ASP常数）<br />
实例： &lt;%<br />
strText = &#8220;This is a test!!&#8221;<br />
pos = Instr(strText, &#8220;a&#8221;)<br />
response.write pos<br />
%&gt;<br />
返回结果: 9</p>
<p><strong>6.函数Dateadd() </strong><br />
功能:计算某个指定的时间和<br />
格式:　dateadd(timeinterval,number,date)<br />
参数:timeinterval是时间单位(月,日..);　number是时间间隔值,date是时间始点.<br />
例子:<br />
&lt;%<br />
currentDate　=　#8/4/99#<br />
newDate　=　DateAdd(&#8220;m&#8221;,3,currentDate)<br />
response.write　newDate<br />
%&gt;　&lt;%<br />
currentDate　=　#12:34:45　PM#<br />
newDate　=　DateAdd(&#8220;h&#8221;,3,currentDate)<br />
response.write　newDate<br />
%&gt;<br />
结果:<br />
11/4/99<br />
3:34:45　PM<br />
其中<br />
&#8220;m&#8221;　=　&#8221;month&#8221;;<br />
&#8220;d&#8221;　=　&#8221;day&#8221;;<br />
如果是currentDate　格式,则,<br />
&#8220;h&#8221;　=　&#8221;hour&#8221;;<br />
&#8220;s&#8221;　=　&#8221;second&#8221;;</p>
<p><strong>7.函数Datediff()</strong><br />
功能:计算某量个指定的时间差<br />
格式:　datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]])<br />
参数:　timeinterval　是时间单位;　date1,date2是有效的日期表达式,firstdayofweek,firstdayofyear　是任意选项.<br />
例子:<br />
&lt;%<br />
fromDate　=　#8/4/99#<br />
toDate　=　#1/1/2000#<br />
response.write　&#8221;There　are　&#8221;　&amp;　_<br />
DateDiff(&#8220;d&#8221;,fromDate,toDate)　&amp;　_<br />
&#8220;　days　to　millenium　from　8/4/99.&#8221;<br />
%&gt;<br />
结果:There　are　150　days　to　millenium　from　8/4/99.<br />
<strong><br />
8.函数day() </strong><br />
功能:返回一个整数值,对应于某月的某日<br />
格式:　day(date)<br />
参数:　date是一个有效的日期表达式;<br />
例子&lt;%　=date(#8/4/99#)　%&gt;<br />
结果:4</p>
<p><strong>9.函数formatcurrency()</strong><br />
功能:转换成货币格式<br />
格式:　formatcurrency(expression　[,digit[,leadingdigit[,paren[,groupdigit]]]])<br />
参数:　expression　是有效的数字表达式;digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项.<br />
例子&lt;%=FormatCurrency(34.3456)%&gt;<br />
结果34.35</p>
<p><strong>10.函数Formatdatetime() </strong><br />
功能:格式化日期表达式/变量<br />
格式:　formatdatetime(date[,nameformat])<br />
参数:　date为有效的日期表达式/变量;nameformat是指定的日期格式常量名称.<br />
例子&lt;%　=formatdatetime(&#8220;08/04/99&#8221;,vblongdate)　%&gt;<br />
结果:Wednesday,August　04,1999<br />
说明:<br />
描述<br />
返回表达式，此表达式已被格式化为日期或时间。<br />
语法<br />
FormatDateTime(Date[,　NamedFormat])<br />
FormatDateTime　函数的语法有以下参数：<br />
参数　描述<br />
Date　必选项。要被格式化的日期表达式。<br />
NamedFormat　可选项。指示所使用的日期/时间格式的数值，如果省略，则使用　vbGeneralDate。<br />
设置<br />
NamedFormat　参数可以有以下值：<br />
常数　值　描述<br />
vbGeneralDate　0　显示日期和/或时间。如果有日期部分，则将该部分显示为短日期格式。如果有时间部分，则将该部分显示为长时间格式。如果都存在，则显示所有部分。<br />
vbLongDate　1　使用计算机区域设置中指定的长日期格式显示日期。<br />
vbShortDate　2　使用计算机区域设置中指定的短日期格式显示日期。<br />
vbLongTime　3　使用计算机区域设置中指定的时间格式显示时间。<br />
vbShortTime　4　使用　24　小时格式　(hh:mm)　显示时间。<br />
说明<br />
下面例子利用　FormatDateTime　函数把表达式格式化为长日期型并且把它赋给　MyDateTime:<br />
Function　GetCurrentDate<br />
&#8220;FormatDateTime　把日期型格式化为长日期型。<br />
GetCurrentDate　=　FormatDateTime(Date,　1)<br />
End　Function</p>
<p><strong>11.函数Isnumeric() </strong><br />
功能:返回一个布尔值,判断变量是否为数字变量,或者是可以转换成数字的其它变量.<br />
格式:isnumeric(expression)<br />
参数:expression　是任意的变量.<br />
例子:<br />
&lt;%<br />
i=&#8221;234&#8243;<br />
response.write　isnumeric(i)<br />
%&gt;<br />
结果:　true.</p>
<p><strong>12.函数Isobject()</strong><br />
功能:返回一个布尔值,判断变量是否为对象的变量,<br />
格式:　isobject(expression)<br />
参数:　expression　是任意的变量.<br />
例子:<br />
&lt;%<br />
set　con　=server.creatobject(&#8220;adodb.connection&#8221;)<br />
response.write　isobject(con)<br />
%&gt;<br />
结果:　true</p>
<p><strong>13.函数:Lbound() </strong><br />
功能:返回一个数组的下界.<br />
格式:Lbound(arrayname[,dimension])<br />
参数:arrayname　是数组变量,dimension　是任意项<br />
例子:<br />
&lt;%<br />
i　=　array(&#8220;1&#8243;,&#8221;2&#8243;,&#8221;3&#8221;)<br />
response.write　lbound(i)<br />
%&gt;<br />
结果:0</p>
<p><strong>14.函数Lcase() </strong><br />
功能:将一字符类型变量的字符全部变换小写字符.<br />
格式:Lcase(string)<br />
参数:string是字符串变量<br />
例子:<br />
&lt;%<br />
str=&#8221;THIS　is　Lcase!&#8221;<br />
response.write　Lcase(str)<br />
%&gt;<br />
结果:this　is　lcase!</p>
<p><strong>15.函数left() </strong><br />
功能:截取一个字符串的前部分;<br />
格式:left(string,length)<br />
参数:string字符串,length截取的长度.<br />
例子:　&lt;%　=left(&#8220;this　is　a　test!&#8221;,6)　%&gt;<br />
结果:this　i</p>
<p><strong>16.函数len() </strong><br />
功能:返回字符串长度或者变量的字节长度<br />
格式:len(string　*varname)<br />
参数:string字符串;varname任意的变量名称<br />
例子:<br />
&lt;%<br />
strtest=&#8221;this　is　a　test!&#8221;<br />
response.write　left(strtest)<br />
%&gt;<br />
结果:15</p>
<p><strong>17.函数ltrim() </strong><br />
功能:去掉字符串前的空格.<br />
格式:ltrim(string)<br />
参数:string　字符串.<br />
例子:　&lt;%　=ltrim　(&#8220;　this　is　a　test!&#8221;)<br />
结果:this　is　a　test!</p>
<p><strong>18.函数Mid()</strong><br />
功能:从字符串中截取字符串.<br />
格式:mid(string,start　[,length])<br />
参数:string字符串,start截取的起点,length要截取的长度.<br />
例子:<br />
&lt;%<br />
strtest=&#8221;this　is　a　test,　Today　is　Monday!&#8221;<br />
response.write　mid(strtest,17,5)<br />
%&gt;<br />
结果:Today</p>
<p><strong>19.函数minute() </strong><br />
功能:返回一数值,　表示分钟<br />
格式:minute(time)<br />
参数:　time是时间变量<br />
例子lt;%　=minute(#12:23:34#)　%&gt;<br />
结果:23</p>
<p><strong>20.函数month() </strong><br />
功能:返回一数值,　表示月份<br />
格式:month(time)<br />
参数:time是日期变量<br />
例子&lt;%　=month(#08/09/99)　%&gt;<br />
结果:9<br />
<strong><br />
21.函数monthname()</strong><br />
功能:返回月份的字符串(名称).<br />
格式:Monthname(date　[,abb])<br />
参数:　date是日期变量,abb=true时　则月份的缩写,<br />
例子:<br />
&lt;%　=monthname(#4/5/99#)　%&gt;<br />
结果:April</p>
<p><strong>22.函数Now()</strong><br />
功能:返回系统的当前时间和日期.<br />
格式:now()<br />
参数:无<br />
例子:<br />
&lt;%　=now()　%&gt;<br />
结果:　05/10/00　8:45:32　pm</p>
<p><strong>23.函数:replace() </strong><br />
功能:在字符串中查找,替代指定的字符串.<br />
格式:replace(strtobesearched,strsearchfor,strreplacewith　[,start[,count[,compare]]])<br />
参数:strtobesearched是字符串;　strsearchfor是被查找的子字符串;strreplacewith　是用来替代的子字符串.start,count,compare　是任意选项.<br />
例子:<br />
&lt;%<br />
strtest=&#8221;this　is　an　apple.&#8221;<br />
response.write　replace(strtest,&#8221;apple&#8221;,&#8221;orange&#8221;)<br />
%&gt;<br />
结果:this　is　an　orange.</p>
<p><strong>24.函数right()</strong><br />
功能:截取一个字符串的后部分<br />
格式:right(string,length)<br />
参数:string字符串,length截取的长度.<br />
例子:<br />
&lt;%<br />
strtest=&#8221;this　is　a　test!&#8221;<br />
response.write　right(strtest,3)<br />
%&gt;<br />
结果:st!</p>
<p><strong>25.函数rnd() </strong><br />
功能:返回一个随机数值<br />
格式:rnd[(number)]<br />
参数:number是任意数值.<br />
例子:<br />
&lt;%<br />
randomize()<br />
response.write　rnd()<br />
%&gt;<br />
结果:0/1数值之一,无randomize(),　则不能产生随机数.<br />
<strong><br />
26.函数round() </strong><br />
功能:完整数值<br />
格式:round(expression[,numright])<br />
参数:expression数字表达式;numright任意选项.<br />
例子:<br />
&lt;%<br />
i=12.33654<br />
response.write　round(i)<br />
%&gt;<br />
结果:　12</p>
<p><strong>27.函数rtrim() </strong><br />
功能:去掉字符串后的空格.<br />
格式:rtrim(string)<br />
参数:string　是字符串<br />
例子:<br />
&lt;%<br />
response.write　rtrim(&#8220;this　is　a　test!　&#8221;)<br />
%&gt;<br />
结果:this　is　a　test!</p>
<p><strong>28.函数second() </strong><br />
功能:返回一个整数值.<br />
格式:second(time)<br />
参数:time是一个有效的时间表达式;<br />
例子lt;%　=second(#　12:28:30#)　%&gt;<br />
结果:30</p>
<p><strong>29.函数strReverse() </strong><br />
功能:返回与原字符串排列逆向的字符串.<br />
格式:strreverse(string)<br />
参数:string是字符串<br />
例子&lt;%　=strreverse(&#8220;this　is　a　test!&#8221;)<br />
结果:!tset　a　si　siht</p>
<p><strong>30.函数time() </strong><br />
功能:返回当前系统的时间值.<br />
格式:time()<br />
参数:无<br />
结果:9:58:28　Am</p>
<p><strong>31.函数trim() </strong><br />
功能:删去字符串前,后的空格.<br />
格式:trim(string)<br />
参数:string　字符串.<br />
例子:<br />
&lt;%<br />
strtest=&#8221;　this　is　a　test!　&#8221;<br />
response.write　trim(strtest)<br />
%&gt;<br />
结果:this　is　a　test!</p>
<p><strong>32.函数UBound() </strong><br />
功能:返回一个数组的上界.<br />
格式:Ubound(expression　[,dimension])<br />
参数:expression　是数组表达式/数组变量,dimension　是任意项<br />
例子:<br />
&lt;%<br />
i　=　array(&#8220;1&#8243;,&#8221;2&#8243;,&#8221;3&#8221;)<br />
response.write　ubound(i)<br />
%&gt;<br />
结果:　2</p>
<p><strong>33.函数:UCase() </strong><br />
功能:将一字符类型变量的字符全部变换成大写字符.<br />
格式:Ucase(string)<br />
参数:string是字符串变量<br />
例子:<br />
&lt;%<br />
str=&#8221;THIS　is　Lcase!&#8221;<br />
response.write　Lcase(str)<br />
%&gt;<br />
结果:THIS　IS　LCASE!</p>
<p><strong>34.函数Vartype() </strong><br />
功能:返回变量的常量代码(整数)<br />
格式:Vartype(varname)<br />
参数:varname是任何类型的变量名称.<br />
例子:<br />
&lt;%<br />
i=5<br />
response.write　vartype(i)<br />
%&gt;<br />
结果:2　(2表示整数,须要参考ASP常量代码.)</p>
<p><strong>35.函数Weekday() </strong><br />
功能:返回一个整数,对应一周中的第几天.<br />
格式:Weekday(date　[,firstofweek])<br />
参数:　date为日期变量,firstofweek为任选项.<br />
例子:<br />
&lt;%<br />
d=　#　5/9/00　#<br />
response.write　weekday(d)　%&gt;<br />
结果:3(3　表示是星期二)</p>
<p><strong>36.函数weekdayname() </strong><br />
功能:返回字符串,对应星期几.<br />
格式:weekdayname(weekday[,abb[,firstdayofweek]])<br />
参数:weekday为日期变量,abb,firstdayofweek为任选项.<br />
例子:<br />
&lt;%<br />
d　=　#8/4/99#<br />
response.write　weekdayname(d)<br />
%&gt;<br />
结果:　Wednesday</p>
<p><strong>37.函数year() </strong><br />
功能:返回日期表达式所在的年份.<br />
格式:year(date)<br />
参数:　date是有效的日期表达式<br />
例子:<br />
&lt;%　=year(#8/9/99#)　%&gt;<br />
结果:1999</p>
<p><strong>38.函数Mod()功能:取余数. </strong><br />
例子:3　Mod　2<br />
结果:1</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP随机生成汉字的函数</title>
		<link>https://www.3code.cn/asp-create-chinese/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Mon, 21 Dec 2009 02:04:33 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1366</guid>

					<description><![CDATA[ASP随机生成汉字的函数]]></description>
										<content:encoded><![CDATA[<p>&lt;%<br />
Dim i<br />
Dim j<br />
Dim HS<br />
Dim HE<br />
Dim LS<br />
Dim LE<br />
dim Result<br />
Result=&#8221;&#8221;<br />
HS = 177<br />
HE = 247<br />
LS = 161<br />
LE = 254<br />
dim Max_Num<br />
Max_num=65536<br />
Randomize<br />
For i = 1 To 4<br />
temp1=dec2bin(Int((HE &#8211; HS) * Rnd()) + HS)<br />
temp2=dec2bin(Int((LE &#8211; LS) * Rnd()) + LS)<br />
Result = Result &amp; chr(BinaryToDecimal(temp1 &amp; temp2) &#8211; Max_num)</p>
<p>Next<br />
response.write Result &amp; &#8221; &#8221;<br />
%&gt;<br />
&lt;%<br />
&#8221;下面是函数<br />
&#8221;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Public Function dec2bin(mynum)&#8221;十进制到二进制<br />
Dim loopcounter<br />
If mynum &gt;= 2 ^ 31 Then<br />
dec2bin = &#8220;Too big&#8221;<br />
Exit Function<br />
End If<br />
Do<br />
If (mynum And 2 ^ loopcounter) = 2 ^ loopcounter Then<br />
dec2bin = &#8220;1&#8221; &amp; dec2bin<br />
Else<br />
dec2bin = &#8220;0&#8221; &amp; dec2bin<br />
End If<br />
loopcounter = loopcounter + 1<br />
Loop Until 2 ^ loopcounter &gt; mynum<br />
End Function<br />
&#8221;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Public Function BinaryToDecimal(BinaryValue) &#8221;二进制到十进制的转换<br />
&#8221; Returns the decimal equivalent of a binary number<br />
Dim idx<br />
Dim tmp<br />
Dim result<br />
Dim digits<br />
digits = Len(BinaryValue)<br />
For idx = digits To 1 Step -1<br />
tmp = Mid(BinaryValue, idx, 1)<br />
If tmp = &#8220;1&#8221; Then result = result + 2 ^ (digits &#8211; idx)<br />
Next<br />
BinaryToDecimal = result</p>
<p>End Function<br />
%&gt;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>常用的ASP函数:WriteLn() PrintLn()</title>
		<link>https://www.3code.cn/asp-writeln-println/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Mon, 21 Dec 2009 01:59:54 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1361</guid>

					<description><![CDATA[<%
'功能:输出字符串加换行
Function WriteLn(sString)
Response.Write( sString &#038; vbCrLf )
End Function
%>]]></description>
										<content:encoded><![CDATA[<p><strong>代码</strong><br />
&lt;%<br />
&#8216;功能:输出字符串加换行<br />
Function WriteLn(sString)<br />
Response.Write( sString &amp; vbCrLf )<br />
End Function<br />
%&gt;</p>
<p><strong>代码</strong><br />
&lt;%<br />
&#8216;功能:输出字符串加HTML代码&lt;br /&gt;<br />
Function PrintLn(sString)<br />
Response.Write( sString &amp; vbCrLf &amp; &#8220;&lt;br /&gt;&#8221; &amp; vbCrLf)<br />
End Function<br />
%&gt;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP实现在线压缩的函数</title>
		<link>https://www.3code.cn/asp-winrar/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Fri, 18 Dec 2009 13:32:37 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1340</guid>

					<description><![CDATA[函数要调用cmd和winrar.exe，只能以管理组启动这些程序，合适的权限分配下才能正常使用这个函数。需要使得匿名账户有执行权限，和ntfs文件系统的读写权限。没有自己服务器的还是算了。有些虚拟主机程式是支持解压缩和压缩的，实现的道理类似，无外乎就是winrar的使用。]]></description>
										<content:encoded><![CDATA[<p>函数要调用cmd和winrar.exe，只能以管理组启动这些程序，合适的权限分配下才能正常使用这个函数。需要使得匿名账户有执行权限，和ntfs文件系统的读写权限。没有自己服务器的还是算了。有些虚拟主机程式是支持解压缩和压缩的，实现的道理类似，无外乎就是winrar的使用。</p>
<p>要想实现这种功能，首先要得到Rar程序的解压缩核心文件支持（可以下载WinRar软件，再把其中的Rar.exe文件单独“拿”出来。），并且还需要Windows操作系统自带的cmd.exe程序（这个程序用来执行Rar.exe文件。操作系统自带的，NT内核的操作系统可以在操作系统安装目录下的System32文件夹下找到它；Windows 9X的操作系统可以在操作系统安装目录下的System文件夹下找到它。），然后把它们上传到同一目录中。</p>
<p>&lt;%<br />
&#8216;描述：只有压缩功能，没有解压功能;需要cmd.exe和Rar.exe两个执行程序<br />
&#8216;参数说明：Rar(ByVal CmdDir,ByVal RarNameDir,RarSourceDir)<br />
&#8216;CmdDir为cmd.exe和Rar.exe两个执行程序的[共同]存放绝对路径；<br />
&#8216;RarNameDir为压缩后保存文件名称,要绝对路径；<br />
&#8216;比如：E:\WebSite\Rar\AA\MMGG 那么表示压缩为MMGG.rar,保存在E:\WebSite\Rar\AA\路径下<br />
&#8216;RarSourceDir要压缩的[文件]或[文件夹],要绝对路径；<br />
&#8216;比如：E:\WebSite\Rar\AA表示压缩名为&#8221;AA&#8221;的整个文件夹；E:\WebSite\Rar\AA\表示压缩文件夹&#8221;AA&#8221;里的[所有文件]（不包括里面的文件夹）<br />
&#8216;******************************************************<br />
Sub Rar(ByVal CmdDir,ByVal RarNameDir,RarSourceDir)<br />
Dim Cmd,Shell<br />
Cmd=CmdDir&amp;&#8221;cmd.exe /c &#8220;&amp;CmdDir&amp;&#8221;Rar.exe a -ep1 -o+ &#8221; &#8216;// -ep1 -o+分别为两个开关命令具体可参考WinRar的帮助<br />
Cmd=Cmd&amp;RarNameDir&amp;&#8221; &#8220;&amp;RarSourceDir<br />
On Error Resume Next<br />
Set Shell = Server.CreateObject(&#8220;WScript.Shell&#8221;)<br />
If Err or IsObject(Shell)=False Then<br />
If Err Then Err.Clear<br />
Response.Write &#8220;没有操作Shell权限&#8230;&#8221;<br />
Response.End<br />
End If<br />
On Error Resume Next<br />
Shell.Run Cmd,1,True<br />
If Err Then<br />
Err.Clear<br />
Response.Write &#8220;压缩文件时出错，可能没有操作权限&#8221;<br />
Response.End<br />
End If<br />
End Sub<br />
%&gt;</p>
<p><strong>示例：</strong><br />
&lt;%<br />
Dim CmdDir,RarNameDir,RarSource<br />
CmdDir=Server.MapPath(&#8220;RAR&#8221;)&amp;&#8221;\&#8221; &#8216;//cmd.exe和rar.exe存放的路径<br />
RarNameDir=Server.MapPath(&#8220;AA&#8221;)&amp;&#8221;\MMGG&#8221; &#8216;//压缩为&#8221;MMGG.rar&#8221;<br />
RarSourceDir=Server.MapPath(&#8220;AA&#8221;)&amp;&#8221;&#8221; &#8216;//将整个&#8221;AA&#8221;文件夹压缩<br />
Call Rar(CmdDir,RarNameDir,RarSourceDir)<br />
%&gt;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP Split将字符串转换为数组取数组下标</title>
		<link>https://www.3code.cn/asp-split-use/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Thu, 17 Dec 2009 02:36:29 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<category><![CDATA[ASP字符串]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1336</guid>

					<description><![CDATA[将数据使用间隔字符串存储可以减少少写几个数据库字段，也方便以后扩展数据。

如：在论坛中用户的性格有多重性格、乐天达观、成熟稳重、幼稚调皮、温柔体贴等等，他们分别对应的值为0、1、2、3、4，在存储这些数据时使用间隔字符串，将数据存储到一个文本字段中。数据存储格式为：0&#124;2&#124;3&#124;4&#124;。]]></description>
										<content:encoded><![CDATA[<p>将数据使用间隔字符串存储可以减少少写几个数据库字段，也方便以后扩展数据。</p>
<p>如：在论坛中用户的性格有多重性格、乐天达观、成熟稳重、幼稚调皮、温柔体贴等等，他们分别对应的值为0、1、2、3、4，在存储这些数据时使用间隔字符串，将数据存储到一个文本字段中。数据存储格式为：0|2|3|4|。</p>
<p>而在使用间隔字符串分隔各项数据时，0|2|3|4|与0|2|3|4在使用Split函数对其进行分隔的时候产生的数组最大下标值是不同的，往往在不注意的时候会在最右侧多写一个间隔字符。这样在输出的时候就会多遍历一个数据，为了避免这种情况的发生，就要对字符串进行检测。</p>
<p>思路：</p>
<p>1.检测右侧是否存在间隔字符串，如果存在则需要将数组最大下标值减一</p>
<p>2.如果不存在则直接返回原数组最大下标</p>
<p>代码：</p>
<p>Dim TempStr,TempArr,TempItem<br />
TempStr=&#8221;第一项1|第二项1|第三项|&#8221;<br />
TempArr=Split(TempStr,&#8221;|&#8221;)<br />
Response.Write TempStr&amp;&#8221;&lt;br /&gt;&#8221;<br />
For TempItem=0 To UBoundStrToArr(TempStr,UBound(TempArr),&#8221;|&#8221;)<br />
Response.Write TempArr(TempItem)&amp;&#8221;&lt;br /&gt;&#8221;<br />
Next<br />
’*************************<br />
’函数:UBoundStrToArr<br />
’作用:检测原字符串转换为数组的最大下标值<br />
’参数:cCheckStr(需要检测的字符串)<br />
’ cUBoundArr(生成数组的最大下标值)<br />
’ cSpaceStr(间隔字符串)<br />
’返回:数组的最大下标值<br />
’************************<br />
Public Function UBoundStrToArr(ByVal cCheckStr,ByVal cUBoundArr,ByVal cSpaceStr)<br />
If Instr(cCheckStr,cSpaceStr)=0 Then<br />
UBoundStrToArr=cUBoundArr<br />
Exit Function<br />
End If<br />
Dim TempSpaceStr,UBoundValue<br />
TempSpaceStr=Mid(cCheckStr,Len(cCheckStr)-Len(cSpaceStr)+1) ’获取字符串右侧间隔字符<br />
If TempSpaceStr=cSpaceStr Then ’如果字符串最右侧存在间隔字符,则下标值需要-1<br />
UBoundValue=cUBoundArr-1<br />
Else<br />
UBoundValue=cUBoundArr<br />
End If<br />
UBoundStrToArr=UBoundValue<br />
End Function</p>
<p>来源：http://blog.csdn.net/lingyun410</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP学习编程必会的代码集</title>
		<link>https://www.3code.cn/asp-newstudy/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Thu, 17 Dec 2009 02:20:30 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1321</guid>

					<description><![CDATA[ASP最后编程的时候，新手根本想不出来要怎么来组合才能完成一个模块，下面把这些语法按照程序员常用的模块方式组合起来，请大家按照模块来记忆，然后按照模块来应用，不一定要一个一个字母的背下来，关键是用到这些模块的时候能准确的，拿出来，安上去！

注意下面的标点符号，全部都为英文中的半角符号，如果写成了全角的就一定运行不起来了，切忌切忌……
]]></description>
										<content:encoded><![CDATA[<p>ASP最后编程的时候，新手根本想不出来要怎么来组合才能完成一个模块，下面把这些语法按照程序员常用的模块方式组合起来，请大家按照模块来记忆，然后按照模块来应用，不一定要一个一个字母的背下来，关键是用到这些模块的时候能准确的，拿出来，安上去！</p>
<p>注意下面的标点符号，全部都为英文中的半角符号，如果写成了全角的就一定运行不起来了，切忌切忌……</p>
<p><strong>1、常用写法</strong><br />
(1)ASP开始结束符语法：&lt;% %&gt; 文件后缀.asp<br />
(2)Request.form(&#8220;title&#8221;) ’获取表单中的一个输入框name叫title的值<br />
(3)Request.querystring(&#8220;title&#8221;) ’获取连接中的一个参数title=后面的值</p>
<p>(4)dim str<br />
str=&#8221;我爱你&#8221;<br />
response.write(str) ’向屏幕输出<br />
(5) response.write &#8220;ok 程序运行到这里了！&#8221;</p>
<p>(6) sql=&#8221;select * from news&#8221;<br />
response.write sql<br />
’调试和查看sql语句写法是否正确的语句常用到</p>
<p>(7)Response.Redirect(&#8220;login.asp&#8221;) ’跳转到另外一个页面<br />
(8)response.redirect(&#8220;admin.asp&#8221;) ’转到后台<br />
(9)Response.end ’程序输出截至，不显示该条语句下面的内容了<br />
(10)Response.Write(&#8220;&lt;script&gt;alert(’???！’)&lt;/script&gt;&#8221;)’弹出提示窗口</p>
<p><strong>2、判断语句</strong><br />
(1)判断表单传来的用户名和密码是否正确，并提示<br />
If request(&#8220;username&#8221;)=&#8221;admin&#8221; then<br />
Response.write&#8221;恭喜，你已经登录成功&#8221;<br />
Else<br />
Response.write&#8221;对不起，您输入的用户名错误，请返回重输入&#8221;<br />
End if</p>
<p>(2)同时判定用户名和密码都正确就转入到后台，否则退回到从新输入页面<br />
If request(&#8220;name&#8221;)=&#8221;admin&#8221; and request(&#8220;pass&#8221;)=&#8221;admin&#8221; then<br />
Response.redirect&#8221;admin.asp&#8221;<br />
Else<br />
Response.redirect&#8221;login.asp&#8221;<br />
End if</p>
<p>(3)变量值和字符串值合起来用&amp;<br />
a=&#8221;我&#8221;<br />
b=&#8221;爱&#8221;<br />
c=&#8221;你&#8221;<br />
response.write a&amp;b&amp;c&amp;&#8221;妈妈&#8221;</p>
<p><strong>3、循环语句：循环显示6条数据库中的记录</strong><br />
(1)写法1：<br />
do while not rs.eof<br />
response.write &#8220;&lt;br&gt;&lt;font color=#000000&gt;&#8221;&amp;rs(&#8220;title&#8221;)&amp;&#8221;&lt;/font&gt;&lt;br&gt;&#8221;<br />
rs.movenext<br />
loop<br />
(2)写法二：<br />
for n=1 to 6<br />
response.write rs(&#8220;title&#8221;)&amp;&#8221;&lt;br&gt;&#8221;<br />
if rs.eof then<br />
exit for ’跳出for循环<br />
else<br />
rs.movenext ’记录集下移一条<br />
end if<br />
next</p>
<p><strong>4、常用变量转换函数</strong><br />
Now() 函数返回系统时间<br />
Date() 函数返回当前系统日期.<br />
CStr(int) 函数转化一个表达式为字符串<br />
CInt(string) 将一个表达式转化为数字类型<br />
Trim(request(&#8220;username&#8221;)) 函数去掉字符串左右的空格<br />
Left(rs(&#8220;title&#8221;),10)&amp;&#8221;&#8230;&#8221; 函数返回字符串左边第10个字符以前的字符（含第length个字符）,一般在限制新闻标题的显示长度的时候用<br />
Len(string) 函数返回字符串的长度. 中文字符长度也计为一<br />
request.serverVariables(&#8220;remote_host&#8221;)’取得来访问的IP<br />
mid(str,起始字符,[读取长度])：截取字符串中间子字符串<br />
right(str,nlen)：从右边起截取nlen长度子字符串<br />
Lcase(str)：字符串转成小写<br />
Ucase(str)：字符串转成大写<br />
Ltrim(str)：去除字符串左侧空格<br />
Rtrim(str)：去除字符串右侧空格<br />
replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法])：<br />
替换字符串<br />
注：默认值：起始字符 1；替代次数 不限；比较方法 区分大小写（0）<br />
InStr([起始字符,]str,查找字符串[,比较方法])：检测是否包含子字符串 可选参数需同时选 返回起始位置</p>
<p><strong>5、Access数据库连接代码</strong><br />
(1)方法一：<br />
db=&#8221;mydata.mdb&#8221; ’如果放在目录中，就要写明&#8221;database/mydata.mdb&#8221;<br />
Set conn = Server.CreateObject(&#8220;ADODB.Connection&#8221;)<br />
cServer.MapPath(db)<br />
conn.Open connstr</p>
<p>(2)方法二：<br />
’如果你的服务器采用较老版本Access驱动，请用下面连接方法<br />
db=&#8221;mydata.mdb&#8221; ’如果放在目录中，就要写明&#8221;database/mydata.mdb&#8221;<br />
Set conn = Server.CreateObject(&#8220;ADODB.Connection&#8221;)<br />
c &amp; Server.MapPath(db)<br />
conn.Open connstr</p>
<p><strong>6、标准的用Sql语句和asp操作数据的常用写法</strong><br />
包括取全部记录<br />
Set Rs=Server.CreateObject(&#8220;ADODB.RecordSet&#8221;)<br />
SqlStr=&#8221;select * from news&#8221;<br />
Rs.Open SqlStr,conn,1,1 ’运行sql语句，把数据提出到rs对象中</p>
<p>选取几条数据<br />
Set Rs=Server.CreateObject(&#8220;ADODB.RecordSet&#8221;)<br />
SqlStr=&#8221;select top 6 * from news&#8221;<br />
Rs.Open SqlStr,conn,1,1 ’运行sql语句，把6条数据提出到rs对象中</p>
<p>选取一条指定表中id字段数值的数据<br />
Set Rs=Server.CreateObject(&#8220;ADODB.RecordSet&#8221;)<br />
SqlStr=&#8221;select * from news where id=&#8221;&amp;request(&#8220;id&#8221;)<br />
Rs.Open SqlStr,conn,1,1 ’运行sql语句，把6条数据提出到rs对象中</p>
<p>获取一条表单传过来的数据，然后加入到一个表当中<br />
dim a,b,c,d<br />
a=request.form(&#8220;a&#8221;)<br />
b=request(&#8220;b&#8221;)<br />
c=request(&#8220;c&#8221;)<br />
d=request(&#8220;d&#8221;)<br />
sqlstr100000=&#8221;insert into huiyuanbiao(yonghuming,mima,wenti,daan) values(’&#8221;&amp;a&amp;&#8221;’,’&#8221;&amp;b&amp;&#8221;’,’&#8221;&amp;c&amp;&#8221;’,’&#8221;&amp;d&amp;&#8221;’)&#8221;<br />
conn.execute sqlstr100000<br />
response.write&#8221;恭喜，新数据加入成功！&#8221;</p>
<p>修改一条指定表中id字段数值的数据，用表单传过来的数据替换<br />
dim a,d,e<br />
a=request(&#8220;id&#8221;)<br />
d=request.form(&#8220;d&#8221;)<br />
e=request.form(&#8220;e&#8221;)<br />
sqlstr=&#8221;update huiyuanbiao set yonghuming=’&#8221;&amp;d&amp;&#8221;’,mima=’&#8221;&amp;e&amp;&#8221;’ where id=&#8221;&amp;a<br />
response.write sqlstr<br />
conn.execute sqlstr<br />
response.write&#8221;恭喜，数据修改成功!&#8221;</p>
<p>删除一条指定表中id字段数值的数据<br />
dim a<br />
a=request(&#8220;delid&#8221;)<br />
sqlstr=&#8221;delete from huiyuanbiao where id=&#8221;&amp;a<br />
conn.execute sqlstr<br />
response.write&#8221;恭喜，删除成功!&#8221;</p>
<p><strong>7、用Recordset对象和asp操作数据库的常用写法</strong><br />
(1)用sql语句，取出news表中所有的数据放到rs中,按照数据库默认排序<br />
Set Rs=Server.CreateObject(&#8220;ADODB.RecordSet&#8221;)<br />
SqlStr=&#8221;select * from news&#8221;<br />
Rs.Open SqlStr,conn,1,1</p>
<p>(2)取出news表中前6条数据放到rs中，按照数据库默认排序方式<br />
Set Rs=Server.CreateObject(&#8220;ADODB.RecordSet&#8221;)<br />
SqlStr=&#8221;select top 6 * from news&#8221;<br />
Rs.Open SqlStr,conn,1,1</p>
<p>(3)循环显示6条rs对象中存在的数据，列表显示</p>
<p>不带连接的写法<br />
for n=1 to 6<br />
response.write rs(&#8220;title&#8221;)&amp;&#8221;&lt;br&gt;&#8221;<br />
if rs.eof then<br />
exit for<br />
else<br />
rs.movenext<br />
end if<br />
next</p>
<p>带连接的写法<br />
for n=1 to 6<br />
response.write &#8220;&lt;a href=show.asp?id=rs(&#8220;id&#8221;)&gt;&#8221;&amp; left(rs(&#8220;title&#8221;),20)&amp;&#8221;&lt;/a&gt;&lt;br&gt;&#8221;<br />
if rs.eof then<br />
exit for<br />
else<br />
rs.movenext<br />
end if<br />
next</p>
<p>(4)向数据库添加一条数据代码<br />
Set Rs=Server.CreateObject(&#8220;ADODB.RecordSet&#8221;)<br />
SqlStr=&#8221;select * from news&#8221;<br />
Rs.Open SqlStr,conn,1,3’注意这里的1,3代表可以写入的打开数据表<br />
Rs.addnew<br />
Rs(&#8220;title&#8221;)=trim(request.form(&#8220;title&#8221;))<br />
Rs(&#8220;neirong&#8221;)=request.form(&#8220;neirong&#8221;)<br />
Rs(&#8220;date&#8221;)=now()<br />
rs.update ’真正写入数据库</p>
<p>(5)修改一条记录的代码,通过(2)中的连接传递过来了id数值<br />
Set Rs=Server.CreateObject(&#8220;ADODB.RecordSet&#8221;)<br />
SqlStr=&#8221;select * from news where id=&#8221;&amp;request(&#8220;id&#8221;)<br />
Rs.Open SqlStr,conn,1,3 ’注意这里的1,3代表可以写入的打开数据表<br />
Rs(&#8220;title&#8221;)=trim(request(&#8220;title&#8221;))<br />
Rs(&#8220;neirong&#8221;)=request(&#8220;neirong&#8221;)<br />
Rs(&#8220;date&#8221;)=now()<br />
rs.update ’真正写入数据库</p>
<p>(6)删除数据库中一条记录，通过连接传递过来了数据得id数值<br />
Set Rs=Server.CreateObject(&#8220;ADODB.RecordSet&#8221;)<br />
SqlStr=&#8221;select * from news where id=&#8221;&amp;request(&#8220;id&#8221;)<br />
Rs.Open SqlStr,conn,1,3 ’注意这里的1,3代表可以写入的打开数据表<br />
rs.delete ’删除该条数据</p>
<p><strong>8、当点击按钮时候表单带着的数据传送到哪个文件,在哪里指定?</strong></p>
<p>&lt;form method=&#8221;post&#8221; action=&#8221;addsave.asp&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;a&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;b&#8221;&gt;<br />
&lt;input type=&#8221;submit&#8221; name=&#8221;Submit&#8221; value=&#8221;提交&#8221;&gt;<br />
&lt;/form&gt;</p>
<p><strong>9、表单提交来的数据接收并显示到屏幕上的代码</strong><br />
response.write request.form(&#8220;a&#8221;)<br />
response.write now()<br />
response.write trim(request.form(&#8220;b&#8221;))</p>
<p><strong>10、利用Application对象作计数器的语法</strong></p>
<p>在网页的头部加入<br />
Application.Lock<br />
Application(&#8220;counter&#8221;) = Application(&#8220;counter&#8221;) + 1<br />
Application.UnLock<br />
在需要显示计数内容的网页的地方，加入下面的语句<br />
response.write Application(&#8220;counter&#8221;)</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>根据出生时间判断生肖的asp代码</title>
		<link>https://www.3code.cn/asp-shengxiao/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Wed, 16 Dec 2009 09:27:06 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<category><![CDATA[实用代码]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1299</guid>

					<description><![CDATA[&#60;% &#8216;从BbsXp提出来的生肖函数: Function Zodiac(birth<a class="moretag" href="https://www.3code.cn/asp-shengxiao/"> 阅读更多&#8230;</a>]]></description>
										<content:encoded><![CDATA[<p>&lt;%<br />
&#8216;从BbsXp提出来的生肖函数:<br />
Function Zodiac(birthday)<br />
If IsDate(birthday) Then<br />
birthyear = Year(birthday)<br />
ZodiacList = Array(&#8220;猴&#8221;, &#8220;鸡&#8221;, &#8220;狗&#8221;, &#8220;猪&#8221;, &#8220;鼠&#8221;, &#8220;牛&#8221;, &#8220;虎&#8221;, &#8220;兔&#8221;, &#8220;龙&#8221;, &#8220;蛇&#8221;, &#8220;马&#8221;, &#8220;羊&#8221;)<br />
Zodiac = ZodiacList(birthyear Mod 12)<br />
End If<br />
End Function<br />
%&gt;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP操作数据库的类代码</title>
		<link>https://www.3code.cn/asp-database-lei/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Tue, 15 Dec 2009 10:16:50 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<category><![CDATA[asp数据库]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1297</guid>

					<description><![CDATA[对于ASP的使用者来说，在数据库操作上越简单，就有更多的时间去考虑逻辑上和应用上的代码，效率也会更高。今天俺在这里给大家提供一种数据库操作的思路，这些代码是俺在长期的ASP应用中不断完成和修正的，也已经用它完成了很多项目了，应该说直接拿去用是没有问题的。当然本人能力也有限，希望大家一起来讨论。]]></description>
										<content:encoded><![CDATA[<p>对于ASP的使用者来说，在数据库操作上越简单，就有更多的时间去考虑逻辑上和应用上的代码，效率也会更高。今天俺在这里给大家提供一种数据库操作的思路，这些代码是俺在长期的ASP应用中不断完成和修正的，也已经用它完成了很多项目了，应该说直接拿去用是没有问题的。当然本人能力也有限，希望大家一起来讨论。</p>
<p><strong>说明：此帖代码均是VBScript版本。另外最好你对手写ASP已经有一定的基础。</p>
<p>先简单介绍一下俺这个类的一些特点：</strong></p>
<p>1. 可同时操作多个不同类型的数据库。<br />
2. 完全不用考虑数据类型的差别，再也不用想字符型字段加不加单引号。<br />
3. 调用非常简单，对数据库的主要操作一般只需要一行代码。<br />
4. 支持mssql事务回滚。<br />
5. 可自动生成和输出sql语句方便调试。</p>
<p><strong>使用方法：</strong></p>
<p>1. 修改clsDbctrl.asp文件中的第1行为你自己的数据库位置(修改方法参考下面的CreatConn函数说明)。如需连接多个数据库可自行添加，格式相同。</p>
<p>2. 在你新建的asp文件中包含此asp文件。如：<br />
&lt;!&#8211;#include file=&#8221;Inc/clsDbctrl.asp&#8221; &#8211;&gt; 或者：<br />
&lt;!&#8211;#include virtual=&#8221;/Inc/clsDbctrl.asp&#8221;&#8211;&gt;</p>
<p>3.使用如下代码应用此类：</p>
<p><strong><br />
一个数据库连接：</strong></p>
<p>&lt;%<br />
OpenConn() &#8216;打开数据库连接<br />
Dim db : Set db = New DbCtrl &#8216;建立对象<br />
&#8216;Your Code Here&#8230;&#8230;<br />
Co(db) : CloseConn() &#8216;释放对象，关闭数据库连接<br />
%&gt;</p>
<p>或者(一个或者多个数据库连接)：</p>
<p>&lt;%<br />
Dim db1 : Set db1 = New DbCtrl : db1.dbConn = Oc(a)<br />
Dim db2 : Set db2 = New DbCtrl : db2.dbConn = Oc(b)<br />
&#8216;Your Code Here&#8230;&#8230;<br />
Co(db1) : Co(db2)<br />
%&gt;</p>
<p>4.具体操作的例子可以参考各函数说明内的代码示例。</p>
<p><strong>方法和属性概览（详细用法及例子在下面）</strong>：</p>
<p><strong>引用：</strong><br />
CreatConn 生成数据库连接字符串<br />
Oc 建立数据库连接<br />
Co 释放对象<br />
OpenConn 打开默认数据库连接<br />
CloseConn 关闭默认数据库连接<br />
dbCtrl.dbConn 属性，获取要操作的数据库连接，默认值为Conn<br />
dbCtrl.dbErr 属性，只读，输出捕获的错误信息<br />
dbCtrl.Version 属性，只读，程序版本信息<br />
dbCtrl.AutoId 方法，自动获取唯一序列号<br />
dbCtrl.GetRecord 方法，取得符合条件的纪录集<br />
dbCtrl.GetRecordBySql 方法，根据sql语句取得纪录集</p>
<p>dbCtrl.GetRecordDetail 方法，根据某一条指定纪录的详细数据<br />
dbCtrl.AddRecord 方法，添加一个新的纪录<br />
dbCtrl.UpdateRecord 方法，根据指定条件更新纪录<br />
dbCtrl.DeleteRecord 方法，删除符合条件的纪录<br />
dbCtrl.ReadTable 方法，根据指定条件获取某条纪录中的其他字段的内容<br />
dbCtrl.C 方法，关闭纪录集对象<br />
dbCtrl.wGetRecord,<br />
dbCtrl.wAddRecord,<br />
dbCtrl.wUpdateRecord,<br />
dbCtrl.wDeleteRecord 这4个方法是取得相应的操作(前面加w)的sql语句</p>
<p><strong>参数约定：</strong></p>
<p>由于ASP没有Arguments对象，不能使用动态参数，所以，在本类的代码中，使用了Array(数组)来达到这一效果。本类中的部分参数可以使用数组(参数说明中有注明)，但使用数组时应参照以下格式：</p>
<p>Array(&#8220;Field1:Value1&#8221;, &#8220;Field2:True&#8221;, &#8220;Field3:100&#8221;)</p>
<p>对，有点像json的格式，如果涉及到变量，那就这样：</p>
<p>Array(&#8220;Field1:&#8221; &amp; Value1, &#8220;Field2:&#8221; &amp; Value2, &#8220;Field3:&#8221; &amp; Value3)</p>
<p>可以这样说，本类中的几乎所有与数据库字段相关的内容都可以用以上的数组格式来设置条件或者是获取内容。而这里最大的特点就是在使用时不用去考虑字段的类型，在字段后跟一个冒号，接着跟上相应的值就行了。如果你经常手写ASP程序的话，你很快就会感受到运用这种方式的魅力，除了数据类型不用考虑之外，它也很方便随时添加和删除条件。如果你还不明白怎么用的话没关系，下面有很多例子可以说明这个问题。</p>
<p>要把ASP的数据库操作封装起来其实并不难，相信大家以前自己也做过类似的代码或是借用过其他人的封装好的代码。但是就如各位知道的一样，使用封装后的代码一旦出错，排错是一个比较麻烦的事情，一般说来，封装后操作越简单的排错也越复杂。俺在写这些代码的时候已经尽我所能考虑到如果出错的话如何去排查错误，在尽可能简化用户操作数据库的代码的同时可以随时输出sql语句排查错误。</p>
<p>最后需要说明一点，本文所涉及的ASP数据库操作并不适合大型数据，如你所知，操作大型数据最好还是使用存储过程之类的东东比较好，以后俺会考虑把对存储过程的操作也封装进去。还有一个效率问题，要追求高效率的话，用ASP还是应该考虑COM+等，所以再次声明，本类适用的对象是中小型 ASP项目。</p>
<p><strong>好了，下面奉上详细使用说明：</strong></p>
<p><strong>一．数据库连接</strong></p>
<p>考虑到大多数人的使用习惯，在数据库连接上使用了公共过程，所以需要大家在代码里自行修改，如果你已经建立了数据库连接，把这几行注释掉就行了。代码中内置了MSSql,Access,MySQL,Oracle4种数据库的连接方式，当然你也可以自行在源代码中增加或删除。修改例如：</p>
<p>Dim a : a = CreatConn(0, &#8220;TestData&#8221;, &#8220;localhost&#8221;, &#8220;username&#8221;, &#8220;userpassword&#8221;)<br />
Dim b : b = CreatConn(1, &#8220;Data/%TestDb%.mdb&#8221;, &#8220;&#8221;, &#8220;&#8221;, &#8220;&#8221;)</p>
<p>说明一下，第1个参数可以是字符串。如果是使用Access，则第2个参数输入相对路径和绝对路径都是可以的，如有密码也可以在第5个参数中输入，如：</p>
<p>Dim c : c = CreatConn(&#8220;ACCESS&#8221;, &#8220;E:\MyWeb\Data\%TestDB%.mdb&#8221;, &#8220;&#8221;, &#8220;&#8221;, &#8220;mdbpassword&#8221;)</p>
<p><strong>相关函数：</strong></p>
<p>原 型：CreatConn(dbType, strDB, strServer, strUid, strPwd)<br />
功 能：建立数据库连接字符串<br />
返回值：String<br />
参 数：<br />
dbType : Integer or String 连接数据库类型<br />
(0 or &#8220;MSSQL&#8221;) &#8211; Microsoft SQL Server<br />
(1 or &#8220;ACCESS&#8221;) &#8211; Microsoft Office Access<br />
(2 or &#8220;MYSQL&#8221;) &#8211; MySQL Server<br />
(3 or &#8220;ORACLE&#8221;) &#8211; Oracle Server<br />
strDB : String 数据库名或数据库地址(Access使用绝对或者相对路径均可)<br />
strServer : String 数据库服务器地址,Access请留空</p>
<p>strUid : String 数据库用户名,Access请留空<br />
strPwd : String 数据库密码</p>
<p>原 型：Oc(connStr)<br />
功 能：打开数据库连接<br />
返回值：Object 数据库连接对象<br />
参 数：<br />
connStr : String 数据库连接字符串，由CreatConn函数生成</p>
<p>原 型：Co(obj)<br />
功 能：关闭对象<br />
参 数：<br />
obj : Object 要关闭的对象名称</p>
<p>原 型：OpenConn<br />
功 能：打开默认数据库连接，会自动建立一个名称为Conn的连接对象<br />
参 数：无</p>
<p>原 型：CloseConn<br />
功 能：关闭名称为Conn的默认数据库连接对象<br />
参 数：无</p>
<p><strong>二. 数据库操作</strong></p>
<p>下面就是本数据库操作类的函数功能说明，应该算是手册了，请多看例子的应用。</p>
<p>原 型：dbCtrl.dbConn(objConn)<br />
功 能：获取数据库连接对象<br />
参 数：<br />
objConn : Object 已经建立的数据库连接对象<br />
举 例：<br />
Dim db : Set db = New DbCtrl<br />
db.dbConn = Oc(CreatConn(1,&#8221;E:\WebSite\MySite\Data\%TestDb%.mdb&#8221;,&#8221;&#8221;,&#8221;&#8221;,&#8221;&#8221;))<br />
Co(db)</p>
<p>说 明：此属性为可选，如果不指定此属性则默认数据连接为页面上名称为Conn的数据库连接对象</p>
<p>原 型：dbCtrl.AutoID(TableName)<br />
功 能：自动获取唯一序列号（自动编号）<br />
返回值：Integer<br />
参 数：<br />
TableName : String 需要获得唯一序列号的数据表名<br />
举 例：<br />
Dim newId<br />
newId = db.AutoId(&#8220;TestTable&#8221;)<br />
Response.Write(newId)</p>
<p>原 型：dbCtrl.GetRecord(TableName,FieldsList,Condition,OrderField,ShowN)<br />
功 能：取得符合条件的纪录集<br />
返回值：Object 纪录集对象<br />
参 数：<br />
TableName : String 表名称<br />
FieldsList : String 字段名称，用逗号隔开，留空则为全部字段<br />
Condition : String or Array 查询条件，如果是数组应遵循前面的参数约定<br />
OrderField : String 排序方式<br />
ShowN : Integer 获取纪录的数量，相当于sql中的 Select Top N<br />
举 例：<br />
Dim rs<br />
Set rs = db.GetRecord(&#8220;TestTable&#8221;,&#8221;fId,fName,fAge&#8221;,&#8221;fSex=&#8217;男&#8217; And IsActive = 1&#8243;,&#8221;fName Asc&#8221;, 0)<br />
While Not rs.eof<br />
Response.Write (&#8220;Name is:&#8221; &amp; rs(1) &amp; &#8221; Age is:&#8221; &amp; rs(2) &amp; &#8220;&lt;br /&gt;&#8221;)<br />
rs.movenext()<br />
Wend<br />
db.C(rs)</p>
<p>对于以上的例子，用下面的数组方式指定条件是等价的：</p>
<p>Set rs = db.wGetRecord(&#8220;TestTable&#8221;,&#8221;fId,fName,fAge&#8221;, Array(&#8220;fSex:男&#8221;,&#8221;IsActive:1&#8243;), &#8220;fName Asc&#8221;, 0)</p>
<p>另外，你可以用下面的语句来查看这个函数生成的sql语句：</p>
<p>Response.Write(db.wGetRecord(&#8220;TestTable&#8221;,&#8221;fId,fName,fAge&#8221;, Array(&#8220;fSex:男&#8221;,&#8221;IsActive:1&#8243;), &#8220;fName Asc&#8221;, 0))</p>
<p>如你所见，只需要在原来的函数前加一个w即可。</p>
<p>原 型：dbCtrl.GetRecordBySQL(strSelect)<br />
功 能：根据sql语句取得纪录集<br />
返回值：Object 纪录集对象<br />
参 数：<br />
strSelect : String 用于生成记录集的SQL语句<br />
举 例：<br />
Dim rs<br />
Set rs = db.GetRecordBySQL(&#8220;Select a.Id, a.LastName, b.Group From User a InnerJoin Depart b On a.GroupId = b.GroupId&#8221;)<br />
&#8216;Your Code Here &#8230;<br />
db.C(rs)</p>
<p>原 型：dbCtrl.GetRecordDetail(TableName, Condition)<br />
功 能：根据某一条指定纪录的详细数据<br />
返回值：Object 纪录集对象<br />
参 数：<br />
TableName : String 表名称<br />
Condition : String or Array 查询条件，如果是数组应遵循前面的参数约定<br />
举 例：<br />
Dim rs, Id<br />
Id = Request.QueryString(&#8220;id&#8221;)<br />
Set rs = db.GetRecordDetail(&#8220;TestTable&#8221;,&#8221;Id=&#8221; &amp; id)<br />
&#8216;Your Code here&#8230;<br />
db.C(rs)</p>
<p>说 明：就像你已经看出来的一样，这个最常用在打开某个详细页面(比如新闻内容页面)</p>
<p>原 型：dbCtrl.AddRecord(TableName, ValueList)<br />
功 能：添加一个新的纪录<br />
返回值：新记录的Id号(成功) or 0 (失败)<br />
参 数：<br />
TableName : String 表名称<br />
ValueList : Array 插入表的字段和值，只能是数组且应遵循前面的参数约定<br />
举 例：<br />
Dim fName, fSex, fWorkYear, fBirth<br />
fName = &#8220;王二坛&#8221;<br />
fSex = &#8220;男&#8221;<br />
fWorkYear = 12<br />
fBirth = Cdate(&#8220;1981-10-23&#8221;)<br />
Dim result<br />
result = db.AddRecord(&#8220;TestTable&#8221;,Array(&#8220;Name:&#8221;&amp;fName, &#8220;Sex:&#8221;&amp;fSex, &#8220;WorkYear:&#8221;&amp;fWorkYear, &#8220;Birthday:&#8221;&amp;fBirth, &#8220;IsActive:True&#8221;))<br />
If result&lt;&gt;0 Then<br />
Response.Write(&#8220;添加记录成功！此记录的自动编号Id为&#8221; &amp; result)<br />
End If</p>
<p>看见了吧，真的不用考虑字段的类型是什么滴。<br />
如果你想要代码中的字段和值看得更清楚一点，也可以这样写，但凭卿之所好：</p>
<p>result = db.AddRecord(&#8220;TestTable&#8221;,Array(&#8220;Name:&#8221; &amp; fName,_<br />
&#8220;Sex:&#8221; &amp; fSex,_<br />
&#8220;WorkYear:&#8221; &amp; fWorkYear,_<br />
&#8220;Birthday:&#8221; &amp; fBirth,_<br />
&#8220;IsActive:True&#8221;))</p>
<p>另外，你可以用下面的语句来查看这个函数生成的sql语句：</p>
<p>Response.Write(db.wAddRecord(&#8220;TestTable&#8221;,Array(&#8220;Name:&#8221;&amp;fName, &#8220;Sex:&#8221;&amp;fSex, &#8220;WorkYear:&#8221;&amp;fWorkYear, &#8220;Birthday:&#8221;&amp;fBirth, &#8220;IsActive:True&#8221;)))</p>
<p>说 明：返回的Id值用的是比较笨的方法，并不能保证在并发数据量大的时候的准确性，慎用。</p>
<p>原 型：dbCtrl.UpdateRecord(TableName, Condition, ValueList)<br />
功 能：根据指定条件更新纪录<br />
返回值：1 (成功) or 0 (失败)<br />
参 数：<br />
TableName : String 表名称<br />
Condition : String or Array 更新条件，如果是数组应遵循前面的参数约定<br />
ValueList : String or Array 更新的字段及值，如果是数组应遵循前面的参数约定<br />
举 例：<br />
Dim fName, fWorkYear<br />
fName = &#8220;王三坛&#8221;<br />
fWorkYear = 10<br />
Dim result<br />
result = db.UpdateRecord(&#8220;TestTable&#8221;, &#8220;UId = 1308&#8221;, Array(&#8220;Name:&#8221;&amp;fName, &#8220;WorkYear:&#8221;&amp;fWorkYear))<br />
If result&lt;&gt;0 Then<br />
Response.Write(&#8220;更新数据成功！&#8221;)<br />
End If</p>
<p>另外，你可以用下面的语句来查看这个函数生成的sql语句：</p>
<p>Response.Write(db.wUpdateRecord(&#8220;TestTable&#8221;, &#8220;UId = 1308&#8221;, Array(&#8220;Name:&#8221;&amp;fName, &#8220;WorkYear:&#8221;&amp;fWorkYear)))</p>
<p>原 型：dbCtrl.DeleteRecord(TableName,IDFieldName,IDValues)<br />
功 能：删除符合条件的纪录<br />
返回值：1 (成功) or 0 (失败)<br />
参 数：<br />
TableName : String 表名称<br />
IDFieldName : String 表的Id字段的名称<br />
IDValues : String or Array 删除条件，可以是由逗号隔开的多个Id号，如果是数组应遵循前面的参数约定<br />
举 例：<br />
Dim ids, result<br />
ids = Request.Form(&#8220;selectid&#8221;) &#8216;可以假设这里获取的值是 12, 34, 256, 314 (复选框提交的值都这样)<br />
result = db.DeleteRecord(&#8220;TestTable&#8221;, &#8220;UId&#8221;, ids)<br />
If result&lt;&gt;0 Then<br />
Response.Write(&#8220;删除数据成功！&#8221;)<br />
End If</p>
<p>当然，你也可以用字符串或者数组指定其它的条件，比如：</p>
<p>result = db.DeleteRecord(&#8220;TestTable&#8221;, &#8220;UId&#8221;, &#8220;IsActive = 0 And FirstName = &#8216;Tom'&#8221;)</p>
<p>另外，你可以用下面的语句来查看这个函数生成的sql语句：</p>
<p>Response.Write(db.wDeleteRecord(&#8220;TestTable&#8221;, &#8220;UId&#8221;, ids))</p>
<p>原 型：dbCtrl.ReadTable(TableName, Condition, GetFieldNames)<br />
功 能：根据指定条件获取某条纪录中的其他字段的内容<br />
返回值：String (GetFieldNames为单个字段) or Array (GetFieldNames为多个字段)<br />
参 数：<br />
TableName : String 表名称<br />
Condition : String or Array 查询条件，如果是数组应遵循前面的参数约定<br />
GetFieldNames : String 单个字段名或者由逗号隔开的多个字段名<br />
举 例：<br />
Dim uid, result<br />
uid = rs(&#8220;postid&#8221;) &#8216;假设这里是页面上某个记录集中的用户id值<br />
result = db.ReadTable(&#8220;UserTable&#8221;,&#8221;UId=&#8221; &amp; uid, &#8220;UserName&#8221;)<br />
Response.Write(&#8220;发布者：&#8221; &amp; result)</p>
<p>我不得不说，在实际应用中，这个函数可能是用得最多的，你上面看到的就是一个非常常用的例子，从一个值去获取另外一个表中某字段值等于该值的另外一个字段的值（有点拗口，不过确实就是这个意思）。下面的例子将告诉你如何根据这个值获得多个相应的值。</p>
<p>Dim uid, result<br />
uid = rs(&#8220;postid&#8221;) &#8216;假设这里是页面上某个记录集中的用户id值<br />
result = db.ReadTable(&#8220;UserTable&#8221;,&#8221;UId=&#8221; &amp; uid, &#8220;UserName,UserSex,UserAge&#8221;)<br />
Response.Write(&#8220;发布者：&#8221; &amp; result(0) &amp; &#8220;&lt;br /&gt; 性别：&#8221; &amp; result(1) &amp; &#8220;&lt;br /&gt; 年龄：&#8221; &amp;result(2))</p>
<p>如你所见，就这么简单，输入多个字段名称得到的是一个数组。</p>
<p>原 型：dbCtrl.C(objRs)<br />
功 能：关闭纪录集对象<br />
参 数：<br />
objRs : Object 页面上的某个记录集对象<br />
举 例：<br />
Dim rs<br />
Set rs = db.GetRecordDetail(&#8220;TestTable&#8221;,&#8221;Id=123&#8243; )<br />
&#8216;Your Code here&#8230;<br />
db.C(rs)</p>
<p>这个函数上面的许多例子都用了，就不多解释了，它等同于rs.close : set rs = nothing。</p>
<p>作者：coldstone 来源：经典论坛 document.body.oncopy = function () { setTimeout( function () { var text = clipboardData.getData(&#8220;text&#8221;); if (text) { text = text + &#8220;\r\n本文来自：网页教学网(www.webjx.com)原文链接：&#8221;+location.href; clipboardData.setData(&#8220;text&#8221;, text); } }, 100 ) }</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>过滤不文明字符ASP代码实例</title>
		<link>https://www.3code.cn/asp-replace-words/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Tue, 15 Dec 2009 10:13:57 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<category><![CDATA[ASP字符串]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1295</guid>

					<description><![CDATA[Function badchar(str)
badstr="不文明字符列表，用&#124;分开（因发表时不能含有那些字符，所以不能贴出。）"
badword=split(badstr,"&#124;")
For i=0 to Ubound(badword)
If instr(str,badword(i)) > 0 then
badchar=True]]></description>
										<content:encoded><![CDATA[<p>&lt;%<br />
Function badchar(str)<br />
badstr=&#8221;不文明字符列表，用|分开（因发表时不能含有那些字符，所以不能贴出。）&#8221;<br />
badword=split(badstr,&#8221;|&#8221;)<br />
For i=0 to Ubound(badword)<br />
If instr(str,badword(i)) &gt; 0 then<br />
badchar=True<br />
Exit For<br />
Else<br />
badchar=False<br />
End If<br />
Next<br />
End Function</p>
<p>Function cutbadchar(str)<br />
badstr=&#8221;不文明字符列表，用|分开（因发表时不能含有那些字符，所以不能贴出。）&#8221;<br />
badword=split(badstr,&#8221;|&#8221;)<br />
For i=0 to Ubound(badword)<br />
If instr(str,badword(i)) &gt; 0 then<br />
str=Replace(str,badword(i),&#8221;×××&#8221;)<br />
End If<br />
Next<br />
cutbadchar=str<br />
End Function<br />
%&gt;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP中Split函数的使用实例</title>
		<link>https://www.3code.cn/asp-split/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Mon, 07 Dec 2009 12:23:43 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<category><![CDATA[ASP字符串]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1214</guid>

					<description><![CDATA[假设变量strURL保存着URL值，如strURL = "ftp://username:password@server"，这是我们在ＩＥ中登录到FTP上时的ＵＲＬ形式，如果我们想把其中的 username和password取出来的话，该怎么办呢？当然解决的方法有许多，在这里我们只介绍用Split来解决的方法。首先，我们找出分割符。我们发现在这个字符串中，username和password之间有个冒号把它们隔开了，所以我们就把这个冒号作为Split函数的"分割符"来分割整个字符串，最后达到取username和password的目的。代码如下：]]></description>
										<content:encoded><![CDATA[<p><strong>ASP中Split函数的使用实例</strong></p>
<p>大家碰到过想取一字符串里的某些值而无从下手？有没有觉得看书或教材对split的写法糊里糊涂……如果有此疑问的话，请看下面我对例子的解释，相信您会对这个有一定的了解。</p>
<p>我先介绍一下Split函数的用法:<br />
返回值数组 = Split(&#8220;字符串&#8221;,&#8221;分割符&#8221;)</p>
<p>假设变量strURL保存着URL值，如strURL = &#8220;ftp://username:password@server&#8221;，这是我们在ＩＥ中登录到FTP上时的ＵＲＬ形式，如果我们想把其中的 username和password取出来的话，该怎么办呢？当然解决的方法有许多，在这里我们只介绍用Split来解决的方法。首先，我们找出分割符。我们发现在这个字符串中，username和password之间有个冒号把它们隔开了，所以我们就把这个冒号作为Split函数的&#8221;分割符&#8221;来分割整个字符串，最后达到取username和password的目的。代码如下：<br />
strURL = &#8220;ftp://username:password@server&#8221;<br />
aryReturn = Split(strURL,&#8221;:&#8221;)</p>
<p>这样我们就把字符串用冒号分割开了，分割后的结果保存在aryReturn中（aryReturn是一个数组）。</p>
<p>下面我们就来看看这个最终的结果吧，因为Split函数最终返回的是一个数组，所以我们主要就是显示数组中的元素了，就要涉及到一些跟数组有关的函数:IsArray()判断是否数组的函数,LBound()取数组的下标,UBound()取数组的上标。</p>
<p>Response.Write(&#8220;返回值是否为数组:&#8221; &amp; IsArray(aryReturn) &amp; &#8220;&lt;br&gt;&#8221;)<br />
For i = LBound(aryReturn) To UBound(aryReturn)<br />
Response.Write(&#8220;返回值数组中的元素[&#8221; &amp; i &amp; &#8220;]：&#8221; &amp; Right(aryReturn(i),Len(aryReturn(i))-2) &amp; &#8220;&lt;br&gt;&#8221;)<br />
Next</p>
<p>通过上面的代码，我们看到字符串被分割成三个部分，即：&#8221;ftp&#8221;、&#8221;//username&#8221;、&#8221;password@server&#8221;。我们要取username和password需要进一步的处理，我就不多说了，直接给出代码。<br />
取username的代码：<br />
strUsername = Right(aryReturn(1),Len(aryReturn(1))-2)<br />
取password的代码：</p>
<p>&#8216;取password我们又用到Split函数了，不过这回的分割符是&#8221;@&#8221;<br />
aryTemp = Split(aryReturn(2),&#8221;@&#8221;)<br />
strPassword = aryTemp(0)<br />
&#8216;我们可以顺便取出server<br />
strServer = aryTemp(1)</p>
<p>分割符可以是一个字符，也可以是一个字符串。如：<br />
aryReturn = Split(&#8220;ftp://username:password@server,&#8221;//&#8221;)</p>
<p>注意：<br />
1.一般来说，ＡＳＰ中可以不声明变量，使用Split函数时，如果要声明返回值的变量的话，只能用Dim，而不能用Redim。虽然说其返回是一个数组，应该是用Redim也可以，但在实际使用过程中是不行。不知是怎么回事？<br />
2. 如果用Split函数来分割一个字符串中并不存在的分割符时，将返回整个字符串，其结果是只有一个元素的数组。</p>
<p>后话，对于要取一字符串中的某些字符或部分，只要抓住规律，再加上用split就可以很好做成各种效果。写此文，希望对大家的学习有所帮助，同时也希望各路高手能够指点！转自蓝色理想</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP通过cdo发送邮件的代码</title>
		<link>https://www.3code.cn/asp-cdo-sendemail/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Sun, 06 Dec 2009 22:20:01 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1204</guid>

					<description><![CDATA[ASP通过cdo发送邮件的代码

通过cdo发送邮件，无需组件支持。一般ASP空间即可实现在线发送。
我们能过下面这个例子说明其使用方法，比较简单，只需要更改相应的代码就可以了，具体是哪里，仔细看一下就明白：]]></description>
										<content:encoded><![CDATA[<p><strong>ASP通过cdo发送邮件的代码</strong></p>
<p>通过cdo发送邮件，无需组件支持。一般ASP空间即可实现在线发送。<br />
我们能过下面这个例子说明其使用方法，比较简单，只需要更改相应的代码就可以了，具体是哪里，仔细看一下就明白：<br />
&lt;%<br />
if request.form(&#8220;action&#8221;)=&#8221;add&#8221; then</p>
<p>form31=request.form(&#8220;form31&#8221;)<br />
form32=request.form(&#8220;form32&#8221;)<br />
form33=request.form(&#8220;form33&#8221;)<br />
form34=request.form(&#8220;form34&#8221;)<br />
form35=request.form(&#8220;form35&#8221;)<br />
form36=request.form(&#8220;form36&#8221;)<br />
form37=request.form(&#8220;form37&#8221;)<br />
form38=request.form(&#8220;form38&#8221;)<br />
form39=request.form(&#8220;form39&#8221;)<br />
form40=request.form(&#8220;form40&#8221;)<br />
form41=request.form(&#8220;form41&#8221;)<br />
form42=request.form(&#8220;form42&#8221;)<br />
form43=request.form(&#8220;form43&#8221;)<br />
form44=request.form(&#8220;form44&#8221;)<br />
form45=request.form(&#8220;form45&#8221;)</p>
<p>Dim iMsg<br />
Dim iConf<br />
Dim Flds<br />
Dim strHTML<br />
Dim strSmartHost</p>
<p>Const cdoSendUsingPort = 2<br />
strSmartHost = &#8220;smtp.126.com&#8221;<br />
userip = Request.ServerVariables(&#8220;HTTP_X_FORWARDED_FOR&#8221;)<br />
If userip = &#8220;&#8221; Then userip = Request.ServerVariables(&#8220;REMOTE_ADDR&#8221;)</p>
<p>set iMsg = CreateObject(&#8220;CDO.Message&#8221;)<br />
set iConf = CreateObject(&#8220;CDO.Configuration&#8221;)<br />
Set Flds = iConf.Fields</p>
<p>With Flds<br />
.Item(&#8220;http://schemas.microsoft.com/cdo/configuration/sendusing&#8221;) = cdoSendUsingPort<br />
.Item(&#8220;http://schemas.microsoft.com/cdo/configuration/smtpserver&#8221;) = strSmartHost<br />
.Item(&#8220;http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout&#8221;) = 10<br />
.Item(&#8220;http://schemas.microsoft.com/cdo/configuration/smtpauthenticate&#8221;) = 1<br />
.Item(&#8220;http://schemas.microsoft.com/cdo/configuration/sendusername&#8221;) = &#8220;username&#8221;<br />
.Item(&#8220;http://schemas.microsoft.com/cdo/configuration/sendpassword&#8221;) = &#8220;password&#8221;<br />
.Update<br />
End With</p>
<p>strHTML = &#8220;&lt;HTML&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;&lt;HEAD&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;&lt;BODY&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;服务类型: &#8221; &amp; trim(form31) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;认证机构: &#8221; &amp; trim(form32) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;所在区域: &#8221; &amp; trim(form33) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;审核类型: &#8221; &amp; trim(form34) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;要求审核日期: &#8221; &amp; trim(form35) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;审核工厂名称: &#8221; &amp; trim(form36) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;详细地址: &#8221; &amp; trim(form37) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;产品: &#8221; &amp; trim(form38) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;工人人数: &#8221; &amp; trim(form39) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;联系人: &#8221; &amp; trim(form40) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;职位: &#8221; &amp; trim(form41) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;电话: &#8221; &amp; trim(form42) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;传真: &#8221; &amp; trim(form43) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;邮箱: &#8221; &amp; trim(form44) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;相关要求: &#8221; &amp; trim(form45) &amp; &#8220;&lt;br&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;&lt;/BODY&gt;&#8221;<br />
strHTML = strHTML &amp; &#8220;&lt;/HTML&gt;&#8221;</p>
<p>With iMsg<br />
Set .Configuration = iConf<br />
.To =&#8221;gbcxm@163.com&#8221;<br />
.From =&#8221;www.3code.cn&lt;username@126.com&gt;&#8221;<br />
.Subject = &#8220;客户在线申请表单(&#8221; &amp; now() &amp;&#8221;)&#8221;<br />
.HTMLBody = strHTML<br />
.Send<br />
End With<br />
Set iMsg = Nothing<br />
Set iConf = Nothing<br />
Set Flds = Nothing<br />
Response.Write &#8220;&lt;script&gt;alert(&#8216;留言成功，我们将尽快与您联系.&#8217;);location.href=&#8217;javascript:history.back()&#8217;;&lt;/script&gt;&#8221;<br />
end if<br />
%&gt;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP验证EMAIL地址格式合法性</title>
		<link>https://www.3code.cn/asp-email-address/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Sun, 06 Dec 2009 22:06:42 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1195</guid>

					<description><![CDATA[ASP验证EMAIL地址格式合法性
继php验证email和js验证email地址格式之后，再说一下ASP验证EMAIL地址格式的函数:]]></description>
										<content:encoded><![CDATA[<p><strong>ASP验证EMAIL地址格式合法性</strong></p>
<p>继<a href="https://www.3code.cn/php-email-address">php验证email</a>和<a href="https://www.3code.cn/js-email/">js验证email地址格式</a>之后，再说一下ASP验证EMAIL地址格式<br />
的函数:</p>
<p>&lt;%<br />
&#8216;验证函数<br />
function IsValidEmail(email)</p>
<p>dim names, name, i, c</p>
<p>&#8216;Check for valid syntax in an email address.<br />
IsValidEmail = true<br />
names = Split(email, &#8220;@&#8221;)<br />
if UBound(names) &lt;&gt; 1 then<br />
IsValidEmail = false<br />
exit function<br />
end if<br />
for each name in names<br />
if Len(name) &lt;= 0 then<br />
IsValidEmail = false<br />
exit function<br />
end if<br />
for i = 1 to Len(name)<br />
c = Lcase(Mid(name, i, 1))<br />
if InStr(&#8220;abcdefghijklmnopqrstuvwxyz_-.&#8221;, c) &lt;= 0 and not IsNumeric(c) then<br />
IsValidEmail = false<br />
exit function<br />
end if<br />
next<br />
if Left(name, 1) = &#8220;.&#8221; or Right(name, 1) = &#8220;.&#8221; then<br />
IsValidEmail = false<br />
exit function<br />
end if<br />
next<br />
if InStr(names(1), &#8220;.&#8221;) &lt;= 0 then<br />
IsValidEmail = false<br />
exit function<br />
end if<br />
i = Len(names(1)) &#8211; InStrRev(names(1), &#8220;.&#8221;)<br />
if i &lt;&gt; 2 and i &lt;&gt; 3 then<br />
IsValidEmail = false<br />
exit function<br />
end if<br />
if InStr(email, &#8220;..&#8221;) &gt; 0 then<br />
IsValidEmail = false<br />
end if</p>
<p>end function<br />
&#8216;使用示例<br />
email=request.form(&#8220;email&#8221;)<br />
if IsValidEmail(email)=false then<br />
response.write&#8221;&lt;SCRIPT language=JavaScript&gt;alert(&#8216;邮箱地址格式不正确&#8217;);&#8221;<br />
response.write&#8221;javascript:history.go(-1)&lt;/SCRIPT&gt;&#8221;<br />
response.End<br />
end if</p>
<p>%&gt;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP编写程序常用的代码</title>
		<link>https://www.3code.cn/asp-codes/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Sat, 05 Dec 2009 18:04:11 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=1188</guid>

					<description><![CDATA[sql="select * from 数据表 where 字段名=字段值 order by 字段名 "
sql="select * from 数据表 where 字段名 like ‘%字段值%‘ order by 字段名 "
sql="select top 10 * from 数据表 where 字段名 order by 字段名 "
sql="select * from 数据表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)"
sql="select * from 数据表 where 字段名 between 值1 and 值2"]]></description>
										<content:encoded><![CDATA[<p><strong>ASP编写程序常用的代码</strong></p>
<p><strong>1. ASP与Access数据库连接：</strong></p>
<p>&lt;%<br />
dim conn,mdbfile<br />
mdbfile=server.mappath(&#8220;数据库名称.mdb&#8221;)<br />
set conn=server.createobject(&#8220;adodb.connection&#8221;)<br />
conn.open &#8220;driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq=&#8221;&amp;mdbfile<br />
%&gt;<br />
<strong>2. ASP与SQL数据库连接：</strong></p>
<p>&lt;%<br />
dim conn<br />
set conn=server.createobject(&#8220;ADODB.connection&#8221;)<br />
con.open &#8220;PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称<br />
%&gt;</p>
<p><strong>建立记录集对象：</strong></p>
<p>set rs=server.createobject(&#8220;adodb.recordset&#8221;)<br />
rs.open SQL语句,conn,3,2<br />
<strong>3. SQL常用命令使用方法：</strong></p>
<p>(1) 数据记录筛选：</p>
<p>sql=&#8221;select * from 数据表 where 字段名=字段值 order by 字段名 &#8221;<br />
sql=&#8221;select * from 数据表 where 字段名 like ‘%字段值%‘ order by 字段名 &#8221;<br />
sql=&#8221;select top 10 * from 数据表 where 字段名 order by 字段名 &#8221;<br />
sql=&#8221;select * from 数据表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)&#8221;<br />
sql=&#8221;select * from 数据表 where 字段名 between 值1 and 值2&#8243;</p>
<p>(2) 更新数据记录：</p>
<p>sql=&#8221;update 数据表 set 字段名=字段值 where 条件表达式&#8221;<br />
sql=&#8221;update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式&#8221;</p>
<p>(3) 删除数据记录：</p>
<p>sql=&#8221;delete from 数据表 where 条件表达式&#8221;<br />
sql=&#8221;delete from 数据表&#8221; (将数据表所有记录删除)</p>
<p>(4) 添加数据记录：</p>
<p>sql=&#8221;insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)&#8221;<br />
sql=&#8221;insert into 目标数据表 select * from 源数据表&#8221; (把源数据表的记录添加到目标数据表)</p>
<p>(5) 数据记录统计函数：</p>
<p>AVG(字段名) 得出一个表格栏平均值<br />
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计<br />
MAX(字段名) 取得一个表格栏最大的值<br />
MIN(字段名) 取得一个表格栏最小的值<br />
SUM(字段名) 把数据栏的值相加</p>
<p><strong>引用以上函数的方法：</strong></p>
<p>sql=&#8221;select sum(字段名) as 别名 from 数据表 where 条件表达式&#8221;<br />
set rs=conn.excute(sql)</p>
<p>用 rs(&#8220;别名&#8221;) 获取统的计值，其它函数运用同上。</p>
<p>(5) 数据表的建立和删除：</p>
<p>CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )</p>
<p>例：CREATE TABLE tab01(name varchar(50),datetime default now())</p>
<p>DROP TABLE 数据表名称 (永久性删除一个数据表)<br />
(6) 记录集对象的方法：<br />
rs.movenext 将记录指针从当前的位置向下移一行<br />
rs.moveprevious 将记录指针从当前的位置向上移一行<br />
rs.movefirst 将记录指针移到数据表第一行<br />
rs.movelast 将记录指针移到数据表最后一行<br />
rs.absoluteposition=N 将记录指针移到数据表第N行<br />
rs.absolutepage=N 将记录指针移到第N页的第一行<br />
rs.pagesize=N 设置每页为N条记录<br />
rs.pagecount 根据 pagesize 的设置返回总页数<br />
rs.recordcount 返回记录总数<br />
rs.bof 返回记录指针是否超出数据表首端，true表示是，false为否<br />
rs.eof 返回记录指针是否超出数据表末端，true表示是，false为否<br />
rs.delete 删除当前记录，但记录指针不会向下移动<br />
rs.addnew 添加记录到数据表末端<br />
rs.update 更新数据表记录<br />
<strong>判断所填数据是数字型</strong></p>
<p>if not isNumeric(request(&#8220;字段名称&#8221;)) then<br />
response.write &#8220;不是数字&#8221;<br />
else<br />
response.write &#8220;数字&#8221;<br />
end if</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP日期的加减函数</title>
		<link>https://www.3code.cn/asp-date-jisuan/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Mon, 30 Nov 2009 06:25:45 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=902</guid>

					<description><![CDATA[DateAdd 函数的语法有以下参数
（1）interval 必选项。字符串表达式，表示要添加的时间间隔。
（2）number 必选项。数值表达式，表示要添加的时间间隔的个数。数值表达式可以是正数（得到未来的日期）或负数（得到过去的日期）。
（3）date 必选项。Variant 或要添加 interval 的表示日期的文字。]]></description>
										<content:encoded><![CDATA[<p><strong>ASP日期的加减函数</strong></p>
<p><strong>1.日期相加</p>
<p>DateAdd 函数</strong><br />
返回已添加指定时间间隔的日期。<br />
DateAdd(interval, number, date)</p>
<p>DateAdd 函数的语法有以下参数<br />
（1）interval 必选项。字符串表达式，表示要添加的时间间隔。<br />
（2）number 必选项。数值表达式，表示要添加的时间间隔的个数。数值表达式可以是正数（得到未来的日期）或负数（得到过去的日期）。<br />
（3）date 必选项。Variant 或要添加 interval 的表示日期的文字。</p>
<p><strong>说明</strong><br />
可用 DateAdd 函数从日期中添加或减去指定时间间隔。例如可以使用 DateAdd 从当天算起 30 天以后的日期或从现在算起 45 分钟以后的时间。要向 date 添加以“日”为单位的时间间隔，可以使用“一年的日数”（“y”）、“日”（“d”）或“一周的日数”（“w”）。</p>
<p>DateAdd 函数不会返回无效日期。如下示例将 95 年 1 月 31 日加上一个月：</p>
<p>NewDate = DateAdd(&#8220;m&#8221;, 1, &#8220;31-Jan-95&#8221;)<br />
在这个示例中，DateAdd 返回 95 年 2 月 28 日，而不是 95 年 2 月 31 日。如果 date 为 96 年 1 月 31 日，则返回 96 年 2 月 29 日，这是因为 1996 是闰年。</p>
<p>如果计算的日期是在公元 100 年之前，则会产生错误。<br />
如果 number 不是 Long 型值，则在计算前四舍五入为最接近的整数。</p>
<p><strong>２.日期相减</p>
<p>DateDiff 函数</strong><br />
返回两个日期之间的时间间隔。<br />
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])</p>
<p>DateDiff 函数的语法有以下参数：<br />
（1）interval 必选项。字符串表达式，表示用于计算 date1 和 date2 之间的时间间隔。<br />
（2）date1, date2 必选项。日期表达式。用于计算的两个日期。<br />
（3）Firstdayofweek 可选项。指定星期中第一天的常数。如果没有指定，则默认为星期日。。<br />
（4）Firstweekofyear 可选项。指定一年中第一周的常数。如果没有指定，则默认为 1 月 1 日所在的星期。</p>
<p><strong>说明</strong><br />
DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用 DateDiff 计算两个日期相差的天数，或者当天到当年最后一天之间的星期数。</p>
<p>要计算 date1 和 date2 相差的天数，可以使用“一年的日数”（“y”）或“日”（“d”）。当 interval 为“一周的日数”（“w”）时，DateDiff 返回两个日期之间的星期数。如果 date1 是星期一，则 DateDiff 计算到 date2 之前星期一的数目。此结果包含 date2 而不包含 date1。如果 interval 是“周”（“ww”），则 DateDiff 函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2 之间星期日的数目。如果 date2 是星期日，DateDiff 将计算 date2，但即使 date1 是星期日，也不会计算 date1。</p>
<p>如果 date1 晚于 date2，则 DateDiff 函数返回负数。</p>
<p>firstdayofweek 参数会对使用“w”和“ww”间隔符号的计算产生影响。</p>
<p>如果 date1 或 date2 是日期文字，则指定的年度会成为日期的固定部分。但是如果 date1 或 date2 被包括在引号 (&#8221; &#8220;) 中并且省略年份，则在代码中每次计算 date1 或 date2 表达式时，将插入当前年份。这样就可以编写适用于不同年份的程序代码。</p>
<p>在 interval 为“年”（“yyyy”）时，比较 12 月 31 日和来年的 1 月 1 日，虽然实际上只相差一天，DateDiff 返回 1 表示相差一个年份。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP屏蔽sql语句注入的代码</title>
		<link>https://www.3code.cn/asp-ping-sql/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Mon, 30 Nov 2009 04:35:17 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=897</guid>

					<description><![CDATA[ASP屏蔽sql语句注入的代码 dim nothis(16)
nothis(0)="net user"
nothis(1)="xp_cmdshell"
nothis(2)="/add"]]></description>
										<content:encoded><![CDATA[<p><strong>ASP屏蔽sql语句注入的代码</strong></p>
<p>&lt;% &#8216;更多代码请访问www.3code.cn%&gt;<br />
&lt;%<br />
dim qs,errc,iii<br />
qs=request.servervariables(&#8220;query_string&#8221;)<br />
dim nothis(16)<br />
nothis(0)=&#8221;net user&#8221;<br />
nothis(1)=&#8221;xp_cmdshell&#8221;<br />
nothis(2)=&#8221;/add&#8221;<br />
nothis(3)=&#8221;exec%20master.dbo.xp_cmdshell&#8221;<br />
nothis(4)=&#8221;net localgroup administrators&#8221;<br />
nothis(5)=&#8221;select&#8221;<br />
nothis(6)=&#8221;count&#8221;<br />
nothis(7)=&#8221;asc&#8221;<br />
nothis(8)=&#8221;char&#8221;<br />
nothis(9)=&#8221;mid&#8221;<br />
nothis(10)=&#8221;&#8216;&#8221;<br />
nothis(11)=&#8221;:&#8221;<br />
nothis(12)=&#8221;insert&#8221;<br />
nothis(13)=&#8221;delete&#8221;<br />
nothis(14)=&#8221;drop&#8221;<br />
nothis(15)=&#8221;truncate&#8221;<br />
nothis(16)=&#8221;from&#8221;<br />
errc=false<br />
for iii= 0 to ubound(nothis)<br />
if instr(qs,nothis(iii))&lt;&gt;0 then<br />
errc=true<br />
end if<br />
next<br />
if errc then<br />
Response.Write(&#8220;对不起，非法URL地址请求!&#8221;)<br />
response.end<br />
end if</p>
<p>%&gt;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ASP三级联动实例代码附数据库</title>
		<link>https://www.3code.cn/asp-3-database/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Mon, 30 Nov 2009 04:09:04 +0000</pubDate>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP函数]]></category>
		<category><![CDATA[实用代码]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=894</guid>

					<description><![CDATA[ASP三级联动实例代码附数据库 包括四个文件：1、数据库连接文件:conn.asp2、JS文件: clienthint.js3、ASP程序文件：select.asp4、数据库文件：mdb\gbcxm.asp下面是select.asp文件内容示例，下载包里面已有，请下载。]]></description>
										<content:encoded><![CDATA[<p><strong>ASP三级联动实例代码附数据库[本站原创]</strong></p>
<p><strong>包括四个文件：</strong></p>
<p>1、数据库连接文件:conn.asp</p>
<p>2、JS文件: clienthint.js</p>
<p>3、ASP程序文件：select.asp</p>
<p>4、数据库文件：mdb\gbcxm.asp</p>
<p><strong>下面是select.asp文件内容示例，下载包里面已有，请下载。</strong></p>
<p>&lt;%response.Charset   =   &#8220;gb2312&#8243; %&gt;<br />
&lt;!&#8211;#include file=&#8221;conn.asp&#8221; &#8211;&gt;<br />
&lt;script src=&#8221;clienthint.js&#8221;&gt;&lt;/script&gt;<br />
&lt;% &#8216;酷码资源原创,更多代码请访问www.3code.cn%&gt;<br />
&lt;select size=&#8221;1&#8243; name=&#8221;kind1&#8243;  onchange=&#8221;showlist(this.value);&#8221;&gt;<br />
&lt;option value=&#8221;&#8221;&gt;请选择城市&lt;/option&gt;<br />
&lt;%set rskind1=conn.execute(&#8220;select * from kind1 order by title&#8221;)<br />
do while not rskind1.eof<br />
%&gt;<br />
&lt;option value=&#8221;&lt;%=rskind1(&#8220;id&#8221;)%&gt;&#8221; &lt;%if request(&#8220;kind1&#8221;)=trim(rskind1(&#8220;id&#8221;)) then%&gt; selected &lt;%end if%&gt;&gt;&lt;%=rskind1(&#8220;title&#8221;)%&gt;&lt;/option&gt;<br />
&lt;%<br />
rskind1.movenext<br />
loop<br />
%&gt;<br />
&lt;/select&gt;<br />
&lt;span id=&#8221;mp1&#8243;&gt;&lt;/span&gt;&amp;nbsp;&lt;span id=&#8221;mp2&#8243;&gt;&lt;/span&gt;</p>
<p><a href="https://www.3code.cn/download/asp3select.rar" target="_blank">下载asp3select.rar</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
