<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<lastBuildDate>Mon, 05 Nov 2007 01:46:02 +0800</lastBuildDate>
<title>Asp - czBin's Blog</title>
<link>http://www.czBin.cn/Asp.xml</link>
<description>czBin.cn -> Asp的技术文章</description>
<item>
<pubDate>Mon, 05 Nov 2007 01:46:02 +0800</pubDate>
<title>ASP连接数据库详细介绍(保证你能看懂)</title>
<link>http://www.czBin.cn/ASP.DATA.CONN.001.php</link>
<description><![CDATA[我的习惯不像网络上一些人喜欢长篇大论，来显示自己的专业，也不像有写人草草贴了<br />
代码走人。尤其是发这种基础知识的文章，因为这些文章的读者一般都是初学者，像他<br />
们那样做的结果就是要么看的头痛要么根本看不懂。所以我采用的方法是少说废话，实<br />
例加讲解。不说废话了,进入正题：<br />
要想连接数据库首先要有连接字符串，不会写怎么办？好办！<br />
1、首先新建一个空的文本文档，将扩展名改为.udl,（别问我为什么看不到扩展名啊！“我的电脑<br />
—工具—文件夹选项—隐藏已知文件的扩展名”）！<br />
2、双击这个udl文件，将会打开“数据连接属性”。<br />
3、选择提供程序<br />
   A、 如果是SQL就选择MicroSoft OLE DB Provider for SQL Server,在连接中指定服务器名称，<br />
    本地的话可以直接用“.”，选择指定的用户名称和密码，记得允许保存密码，然后点测试连接，<br />
    如果成功了表示设置好了。<br />
   B、 如果是access接选择Microsoft.Jet.OLEDB.4.0。<br />
4、确定保存。<br />
5、用记事本打开，里面最后一行就是连接字符串。<br />
好了，现在将连接字符串加到asp代码中，完成以下代码：<br />
&lt;%<br />
ON ERROR RESUME NEXT    '如果出错执行下一个语句，这句最好加上，防止别人通过暴库黑你<br />
Dim Str<br />
Set Conn=Server.CreateObject(&quot;ADODB.Connection&quot;)  '创建一个数据库连接<br />
Str=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot; &amp; server.MapPath(&quot;data.mdb&quot;)  '将这个替换成你的连接字符串,server.MapPath表示当前页面所在路径<br />
Conn.Open Str   '打开这个连接<br />
%&gt;<br />
如果为了以后方便可以将这段代码保存到一个独立的asp文件中例如conn.asp,然后当另外一个页面<br />
需要调用Conn这个连接的时候直接在前面用&lt;!--#include file=&quot;conn.asp&quot;--&gt;把conn.asp文件<br />
include进来。<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/ASP.DATA.CONN.001.php</guid>   
</item>
<item>
<pubDate>Mon, 05 Nov 2007 01:07:07 +0800</pubDate>
<title>asp数据库读取并输出代码</title>
<link>http://www.czBin.cn/ASP.DATA.READ.001.php</link>
<description><![CDATA[谈到数据库，ASP一般使用两种数据库,SQLSERVER和ACCESS。<br />
其实单纯使用RS读取数据表中的记录的话在SQLSERVER与在ACCESS中并没有什么不同，不同体<br />
现在连接数据库时使用的连接字符串，鉴于篇幅关于连接这个问题我们在这篇文章不讨论，我们将<br />
会在下一篇文章中做详细讲解，请大家关注。<br />
（说不定当您读到这篇文章时，那篇已经发布了，因为我正准备写）<br />
废话不多说了，请看以下ASP代码:<br />
假设我们的数据库有一个表:table,表table有两个字段:a,b<br />
&lt;!--#include file=&quot;conn.asp&quot;--&gt;'将数据库连接文件include进来，请关注我们的另一篇文章<br />
&lt;%<br />
dim sql '定义一个数据库字符串<br />
set rs = server.CreateObject(&quot;adodb.recordset&quot;)   '创建一个adodb.recordset对象,简称rs<br />
sql = &quot;SELECT * FROM [table]&quot;      '给数据库字符串赋值<br />
rs.open sql,conn,1,1     '打开这个rs,将sql执行结果填入，后面的1,1表示连接方式，尽量不要改<br />
'其实在这一步数据库中的数据已经读进rs中了<br />
do while not rs.eof         '循环输出返回结果集中的值,rs.eof表示返回结果集结束<br />
response.write(rs(&quot;a&quot;))  '输出a字段当前行的值<br />
response.write(rs(&quot;b&quot;)) '输出b字段当前行的值<br />
rs.movenext       '将rs记录读取指针下移一行，这个必须加，不然就成死循环了<br />
loop<br />
%&gt;<br />
简单吧？假如要在文本框中输出，只要将文本框改成类似这样就可以了：<br />
 &lt;input type=&quot;text&quot; name=&quot;textfield&quot; value=&lt;%=rs(&quot;a&quot;)%&gt;&gt;<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/ASP.DATA.READ.001.php</guid>   
</item>
<item>
<pubDate>Sun, 04 Nov 2007 03:51:55 +0800</pubDate>
<title>ASP需要定义变量么,为什么要Dim一下</title>
<link>http://www.czBin.cn/ASP.TIME.VAL.001.php</link>
<description><![CDATA[我们知道ASP其实是弱类型的，也就是说当使用一个变量的时候不一定要对变量进行定义。<br />
在ASP中类似&quot;Dim a&quot;只是将a定义成变量，而不像Visul Basic6.0那样要as....来说明变量类型。<br />
这样在ASP中对变量的定义就显得不那么重要了，说实话，vb这种语言本身就可以不对变量<br />
进行定义，当然在Visul Basic6.0中我们可以指定该文档为强制类型定义。但是在asp中变量<br />
确实是没有类型的，而且也不需要定义，但是不定义变量真的无所谓么？<br />
下面我们来做个实现。请将以下代码执行：<br />
&lt;%<br />
response.write timer() &amp; &quot;&lt;br&gt;&quot;                '在程序开始执行时取一下时间，精确到1/100秒<br />
for i=0 to 1000000        '一个大循环，为了消耗服务器时间<br />
next<br />
response.write timer()                '在程序结尾时取一下时间，精确到1/100秒<br />
%&gt;<br />
为了精确我一共测试了10次取平均执行时间为0.17秒，我的机器是core双核1.66+1G内存。<br />
再测试下面的代码：<br />
&lt;%<br />
dim i  '定义i为变量<br />
response.write timer() &amp; &quot;&lt;br&gt;&quot;<br />
for i=0 to 1000000<br />
next<br />
response.write timer()<br />
%&gt;<br />
同样取平均值为0.08秒<br />
大家看出来了吧？执行时间短了一倍。虽然ASP中可以对变量不进行定义，但是定义变量明显可以<br />
提高代码执行效率。<br />
原因分析：<br />
什么叫变量？我不想说官面上的话，大白话说就是变的量（够白吧），当你定义了一个变量的话，<br />
计算机将会为它指定一个内存区域来存放变量的值，我们往往不关心内存中到底是怎样存放变量的<br />
值的，只需要知道变量的名称就可以了，当服务器接到我们要调用的变量的名称也就会到相应的地址<br />
去取值供我们使用。但是当我们对变量事先没有定义的时候（仅讨论ASP），比方说我们的第一段代码<br />
，服务器每执行到需要调用&quot;i&quot;的时候就会先判断这个字母代表什么？是不是一个ASP语句？得到的结论<br />
固然不是，然后再判断它是不是一个变量（或许先判断是不是常量，总之肯定不会直接就认识它），只有<br />
当确认它确实是个变量的时候才把它当作变量来用。当然我们往往不会用ASP去处理天文级别的数据，<br />
不过作为一个严谨的程序员还是习惯下定义变量吧<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/ASP.TIME.VAL.001.php</guid>   
</item>
<item>
<pubDate>Sun, 04 Nov 2007 03:07:03 +0800</pubDate>
<title>ASP“无效字符”错误解决之我见</title>
<link>http://www.czBin.cn/ASP.ERROR.WORD.001.php</link>
<description><![CDATA[有的朋友问我为什么从网上COPY过来的ASP代码(我们是支持原创的，但是有的朋友嘛。。初学可以理解)总是出现错误。<br />
错误代码如下：<br />
<br />
Microsoft VBScript 编译器错误 (0x800A0408)<br />
无效字符<br />
<br />
这是一个典型的500.100的HTTP错误,也就是说ASP的代码中出现了不可识别的代码。<br />
我的那位可怜的朋友花了一晚上时间都在找自己的代码哪里写错了，结果一无所获。<br />
他把文件发给了我，从表面上看没有任何错误,其实错误就出现在：<br />
—————ASP是无法识别全角的中文空格的。—————<br />
简单吧？<br />
其实很多朋友喜欢把网上别人发的ASP代码直接COPY过来不加任何修改，但是这些发代码的人有的时候会在编辑他的<br />
帖子的时候敲入了全角的中文空格，也许他自己当时都没有注意输入法是设置在了全角状态下，但是COPY了这样的代码<br />
的初学者可就头痛了。<br />
<br />
题外话:别忘记括号，逗号等也要用英文半角哦！<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/ASP.ERROR.WORD.001.php</guid>   
</item>
<item>
<pubDate>Sun, 04 Nov 2007 02:52:49 +0800</pubDate>
<title>利用ADODB.Strean实现ASP无组件上传文件</title>
<link>http://www.czBin.cn/ASP.UPLOAD.FILE.001.php</link>
<description><![CDATA[最近总有朋友问我用ASP实现无组件上传，以前倒是经常用FSO上传，<br />
但是由于FSO的功能过于强大，很多服务器关掉了FSO,所以这里我给<br />
出不用FSO的上传代码，而且也不用其他组件，也就是大家常说的无组件<br />
上传。<br />
&lt;%<br />
　　 FSTR = Request.QueryString(&quot;file&quot;) <br />
       '获得要上传的文件名及路径名（可以将你的action改成类似upfile.asp?file=d:g.gif调用改页面）<br />
　　 Set fStream= Server.CreateObject(&quot;ADODB.Stream&quot;)   '创建一个流对象<br />
　　 fStream.Type =  1                  '设置该流对象数据格式为二进制<br />
　　 fStream.Open                            '打开这个流              <br />
　　 fStream.LoadFromFile FSTR         '从得到的文件路径将文件读入流<br />
　　 fStream.SaveToFile Server.MapPath(&quot;pic.gif&quot;),2'将该流写成文件<br />
%&gt;<br />
请注意一定要确认你对上传目录是否有写权限<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/ASP.UPLOAD.FILE.001.php</guid>   
</item>
<item>
<pubDate>Sat, 27 Oct 2007 01:59:46 +0800</pubDate>
<title>ASP下使用服务器端全局变量Application</title>
<link>http://www.czBin.cn/ASP.Application.Server.001.php</link>
<description><![CDATA[我们知道Session可以被当作全局变量用来传递参数,而大家是否知道IIS还支持一种更BT的全局变量呢？<br />
那就是Application.<br />
Applocation是对应于服务器的，也就是说Application(&quot;app&quot;)对任何一个访问该网站的用户,其值都是相同的。<br />
请看以下代码：<br />
文件appset.asp:<br />
&lt;%Application(&quot;app&quot;)=“这是Application”%&gt;<br />
文件app.asp:<br />
&lt;%response.write  Application(&quot;app&quot;)%&gt;<br />
那么当有一个用户访问了appset.asp之后，任何一个用户再访问app.asp，其结果都是一样的——<br />
显示一行：这是Application<br />
事实上Applocation和session一样并不是某种脚本类型或者某种脚本语言特有的，而是服务器的一个特性，至少IIS是支持的。<br />
不管你用ASP还是ASP.NET作为脚本类型，也不管你用VBScript、C#还是VB.Net作为脚本语言，只要Web服务器是IIS就支持Application和Session。<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/ASP.Application.Server.001.php</guid>   
</item>
<item>
<pubDate>Tue, 09 Oct 2007 18:08:37 +0800</pubDate>
<title>ASP读取远程XML并输出相应数据</title>
<link>http://www.czBin.cn/Asp.Read.XML.001.php</link>
<description><![CDATA[前段时间开始做SEO，大多都是ASP网站，在天津这里，只有这个廉价的ASP才会受到客户的欢迎。<br />
不管你把SEO本身的页面做地多么完美，一定数量且优质的反向也是必不可少的（虽然我不喜欢这个，并且这个BLOG也没有可以加过一个反响，但是，对于一些客户的网站，还是没有办法的），何况咱这水平，也没法把页面做的多完美...<br />
刚开始做的时候，由于客户不多，就手动的在各个网站上，给需要SEO的网站加上反向，但是后来客户多了，就感觉这样的做法效率很低。很多时候，为了加一个词，就要花上几个小时，在手动连接几十个FTP，并且修改页面。<br />
于是今天想把需要SEO的数据统计存在一个文件里，然后在各个需要被优化的网站上，通过程序来读取这个文件，并且输出相应的反向。<br />
远程include文件是肯定不可能了，于是就写了一个XML以及读取程序，如下。<br />
<br />
读取XML并输出超级链接的ASP代码：<br />
<br />
&lt;%<br />
url = &quot;http://www.czbin.cn/Seo_01.xml&quot;<br />
Set http=Server.CreateObject(&quot;Microsoft.XMLHTTP&quot;)<br />
http.Open &quot;GET&quot;,url,False<br />
http.send<br />
Set xmldom=Server.CreateObject(&quot;Microsoft.XMLDOM&quot;)<br />
xmldom.Async=true<br />
xmldom.ValidateOnParse=False<br />
xmldom.Load(http.ResponseXML)<br />
<br />
set nodeGather = xmldom.getElementsByTagName(&quot;S&quot;)<br />
tagCount = nodeGather.length<br />
	for i = 0 to tagCount -1<br />
		nodeContent = nodeGather(i).ChildNodes(0).text<br />
		nodeValue = nodeGather(i).getAttribute(&quot;v&quot;)<br />
			Response.Write &quot;&lt;a href=&quot;&quot;&quot;&amp;nodeValue&amp;&quot;&quot;&quot;&gt;&quot;&amp;nodeContent&amp;&quot;&lt;/a&gt;&quot;&amp;Chr(10)<br />
	next<br />
set nodeGather = nothing<br />
%&gt;<br />
<br />
XML文件：<br />
<br />
&lt;?xml version=&quot;1.0&quot; encoding=&quot;gb2312&quot;?&gt;<br />
&lt;xml&gt;<br />
	&lt;S v=&quot;http://www.czbin.cn&quot;&gt;Czbin's Blog&lt;/S&gt;<br />
	&lt;S v=&quot;http://www.google.cn&quot;&gt;Google&lt;/S&gt;<br />
	&lt;S v=&quot;http://www.Yahoo.com.cn&quot;&gt;Yahoo中国&lt;/S&gt;<br />
&lt;/xml&gt;<br />
<br />
顺带提一下，如果不是读取远程的XML文件，ASP代码可以简化成这样：<br />
&lt;%<br />
xmlconfig = &quot;SEO_01.xml&quot;<br />
set xmldom = Server.CreateObject(&quot;Microsoft.xmldom&quot;)<br />
xmldom.load(server.MapPath(xmlconfig))<br />
<br />
set nodeGather = xmldom.getElementsByTagName(&quot;S&quot;)<br />
tagCount = nodeGather.length<br />
	for i = 0 to tagCount -1<br />
		nodeContent = nodeGather(i).ChildNodes(0).text<br />
		nodeValue = nodeGather(i).getAttribute(&quot;v&quot;)<br />
			Response.Write &quot;&lt;a href=&quot;&quot;&quot;&amp;nodeValue&amp;&quot;&quot;&quot;&gt;&quot;&amp;nodeContent&amp;&quot;&lt;/a&gt;&quot;&amp;Chr(10)<br />
	next<br />
set nodeGather = nothing<br />
%&gt;<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/Asp.Read.XML.001.php</guid>   
</item>
<item>
<pubDate>Sat, 23 Jun 2007 17:30:28 +0800</pubDate>
<title>ASP清空Session的方法-Session.Abandon</title>
<link>http://www.czBin.cn/Asp.Abandon.Session.php</link>
<description><![CDATA[Asp清空Session真是超级简单...相比之下我那么喜欢的Php却....<br />
<br />
只要&lt;%Session.Abandon%&gt;就搞定了....<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/Asp.Abandon.Session.php</guid>   
</item>
<item>
<pubDate>Sat, 23 Jun 2007 17:12:41 +0800</pubDate>
<title>Asp页面自动跳转代码-Asp自动转向的三种方法</title>
<link>http://www.czBin.cn/Asp.Redirect.php</link>
<description><![CDATA[Asp自动跳转可以通过三种方法来实现<br />
<br />
1，Response.Redirect函数:&lt;%Response.Redirect(&quot;index.asp&quot;)%&gt;<br />
2，Meta中的REFRESH:&lt;META HTTP-EQUIV=&quot;REFRESH&quot; CONTENT=&quot;5; URL=index.asp&quot;&gt;<br />
3，输出Javascript函数:<br />
&lt;%<br />
Response.write(&quot;&lt;!--&lt;SCRIPT LANGUAGE=&quot;&quot;JavaScript&quot;&quot;&gt;&quot;)<br />
Response.write(&quot;location.href=index.asp&quot;)<br />
Response.write(&quot;&lt;/SCRIPT&gt;--&gt;&quot;)<br />
%&gt;<br />
......<br />
<br />
<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/Asp.Redirect.php</guid>   
</item>
<item>
<pubDate>Sat, 23 Jun 2007 17:08:27 +0800</pubDate>
<title>计算Asp页面运行时间的代码</title>
<link>http://www.czBin.cn/Asp.runtime.php</link>
<description><![CDATA[Asp运行时间在写程序，尤其是测试数据库时会经常用到，我们无论做什么程序，在制作阶段，都在bottom.asp之类的页面中加入这类代码，总是一种很不错的习惯。<br />
<br />
&lt;%<br />
dim end_time,time_ijob<br />
end_time=timer()<br />
time_ijob=FormatNumber((end_time-startime),2)<br />
if time_ijob&lt;1 then<br />
response.write &quot;执行时间：&lt;font color=&quot;&quot;#ff0000&quot;&quot;&gt;0&quot;&amp;time_ijob&amp;&quot;&lt;/font&gt;秒&quot;<br />
else<br />
response.write &quot;执行时间：&lt;font color=&quot;&quot;#ff0000&quot;&quot;&gt;&quot;&amp;time_ijob&amp;&quot;&lt;/font&gt;秒&quot;<br />
end if<br />
%&gt;<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/Asp.runtime.php</guid>   
</item>
<item>
<pubDate>Sat, 23 Jun 2007 17:02:30 +0800</pubDate>
<title>Asp传值时利用For Each循环读取所有</title>
<link>http://www.czBin.cn/Asp.Foreach.php</link>
<description><![CDATA[Asp从一个页面传过来的值，很多时候，我们并没有选择具体读取某个值得需要，而只是需要把所有值接过来而已。<br />
<br />
下面的代码可以帮助我们做到这点。<br />
<br />
&lt;% For Each cValue in Request.Form %&gt;<br />
  &lt;%=cValue%&gt;'显示Id<br />
  &lt;%=Request.Form(cValue)%&gt;'显示值<br />
&lt;% Next %&gt;<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/Asp.Foreach.php</guid>   
</item>
<item>
<pubDate>Sun, 10 Jun 2007 16:48:47 +0800</pubDate>
<title>ASP判断变量,数据库中的数据是否为空值</title>
<link>http://www.czBin.cn/ASP.NULL.001.php</link>
<description><![CDATA[ASP判断空值时经常会出现莫名其妙的判断失误...<br />
<br />
因为很多时候&quot;&quot;和NULL会被程序判断成不同<br />
<br />
所以,在ASP判断空值的时候,我们可以这样:<br />
<br />
&lt;% if rs(&quot;personNowArea&quot;) = &quot;&quot; or isnull(rs(&quot;personNowArea&quot;)) then %&gt;<br />
<br />
这样无论数据为&lt;NULL&gt;或者为&quot;&quot;均会判断为空值。<br /><br /><br />]]></description>
<category>Asp</category> 
<guid isPermaLink="true">http://www.czBin.cn/ASP.NULL.001.php</guid>   
</item>
</channel>
</rss>