文章 | 入侵攻击 | 安全防御 | 操作系统 | 网站建设 | 网络编程 | 路由交换 | 灾难恢复 | 新闻资讯 | 安全公告
下载 | 漏洞扫描 | 加密破解 | 入侵攻击 | 后门木马 | 溢出程序 | 综合工具 | 安全防护 | 原创发布 | 动画教程
论坛 | 黑客军火 | 配服务器 | 黑客情感 | 免费资源 | 美女贴图 | 灌水无罪 | 在线服务 | 会员照片 | 网站首页
 当前位置:主页 >> 技术文摘 >> 网络编程 >> ASP编程 >> 文章内容  
 

 
ASP设计常见问题及解答精要

www.hx99.org 阅读: 时间:2007-07-29 整理:华西黑盟
------------------------------------------------------------------
 
  作为微软推出的网页与数据库解决方案,ASP由于有微软得天独厚的操作系统等技术后盾支持,因此得到了迅速的发展,并且正受到越来越多的欢迎,在目前在电子商务网站的建设中有很多都使用ASP来编写程序。
  近来有很多的读者向我们咨询学习ASP的方法和在学习中遇到的一些问题,其中有一些是初学者经常遇到和面临的问题。为了让读者在学习ASP的过程中加深对ASP的了解,并能够有效地解决遇到的问题,我们特别收集了比较有代表性的一些问题,在此列举出来并一一给予解答,希望能在这有限的篇幅里为你学习ASP助一臂之力。
  1、问题:ASP是一种编程语言吗?
  答:ASP不是编程语言,而是一种开发环境。ASP提供了一个在服务器端执行指令的环境,它利用了特殊的符号<>来区分HTML与必须经过服务器翻译才能送往客户端的命令。它可以执行的指令包括HTML语言,Microsoft VBScript和Microsoft Jscript等,因此可以制作出功能强大的Web应用程序。
  2、问题:在Web服务器上容纳多个Web站点,能使用PWS吗?
  答:在PWS上只能容纳一个Web站点。为了在相同的计算机上容纳多个Web站点,需要使用Windows NT Server或Windows 2000 Server/Professional和IIS。
  3、问题:如何使用6个内置ASP对象?
  答:ASP提供了多个内嵌对象,无须建立就可以在指令中直接访问和使用它们,这六个对象主要有:请求(Request)对象、响应(Response)对象、工作阶段(Session)对象、应用程序(Application)对象、服务器(Server)对象、Cookies对象,这六个对象中的服务器(Server)对象可加载其他组件,这可以扩展ASP的功能。
  使用Server.CreateObject所建立的对象,它的生命周期在它建立时开始,在它所在的网页程序结束时结束。如果想要让该对象跨网页使用,则可以用Session对象来记录Server.CreateObject所建立的对象。
  4、问题:为什么在使用Response.Redirect的时候出现以下错误:“标题错误,已将HTTP标题写入用户端浏览器,对任何HTTP的标题所作的修改必须在写入页内容之前”?
  答:Response.Redirect可以将网页转移至另外的网页上,使用的语法结构是这样的:Response.Redirect网址,其中网址可以是相对地址或绝对地址,但在IIS4.0使用与在IIS5.0使用有所不同。
  在IIS4.0转移网页须在任何数据都未输出至客户端浏览器之前进行,否则会发生错误。这里所谓的数据包括HTML的卷标,例如:< HTML>,< BODY>等,而在IIS5.0中已有所改进,在IIS5.0的默认情况下缓冲区是开启的,这样的错误不再产生。
  在Response对象中有一Buffer属性,该属性可以设置网站在处理ASP之后是否马上将数据传送到客户端,但设置该属性也必须在传送任何数据给客户端之前。
  为保险起见,无论采用何种ASP运行平台,在页面的开始写上< % Response.Buffer=True %>,将缓冲区设置为开启,这样的错误就不会发生了。
  5、问题:缓冲输出对于网页传输有没有影响?
  答:在比较大的Web页中,第一部分在浏览器中出现可能会有一些延迟,但是加载整个Web页的速度比不用缓冲要快。
  6、问题:在没有表单提交时查询字符串的值是否可以使用Request.QueryString集合?
  答:Request对象用于读取浏览器的数据,它除了可以读取表单字段的内容,还可以用来读取附带在网址后面的参数,无论请求字符串怎样添加到链接地址中对Request来说都没有什么不同。使用get方法提交一个表单,还是跟随一个附加查询串的链接查询字符串中所有的值,都可以使用Request.QueryString集合。
  7、问题:我在ASP脚本中写了很多的注释,这会不会影响服务器处理ASP文件的速度?
  答:在编写程序的过程中,作注释是良好的习惯。经国外技术人员测试,带有过多注释的ASP文件整体性能仅仅会下降0.1%,也就是说在实际应用中基本上不会感觉到服务器的性能下降的。
  8、问题:需不需要在每个ASP文件的开头使用< % @LANGUAGE=VBScript % >?
  答:在每个ASP文件的开头使用< % @LANGUAGE=VBScript %>代码是用来通知服务器现在使用VBScript来编写程序,但因为ASP的预设程序语言是VBScript,因此忽略这样代码也可以正常运行,但如果程序的脚本语言是JavaScrip,就需要在程序第一行指明所用的脚本语言。
  9、问题:我有没有必要在每一个ASP文件中使用“Option Explicit”?
  答:在实际应用中,VBScript变量的概念已经模糊了,允许直接使用变量,而不用Dim声明变量,但这并不是一个好习惯,容易造成程序错误,因为可能重复定义一个变量。我们可以在程序中使用Option Explicit语句,这样在使用一个变量的时候,必须先声明它,如果使用了没有经过声明的变量,运行时,程序就会出错。
  实践证明,ASP文件中使用“Option Explicit”可以使得程序出错机会降到最少,并且会大大提升整体性能。
  10、问题:运行ASP文件时有什么安全措施?
  答:ASP提供了很好的代码保护机制,所有的ASP代码都在服务器端执行而只返回给客户端代码执行结果。但仍不排除恶意人士对Web服务器的刻意破坏,所以在编写ASP文件时更要注意安全问题。
  虽然在ASP中引入文件以inc作为扩展名,在这里仍建议以ASP作为引文件的扩展名。当这些代码在安全机制不好的Web Server上运行时,只需在地址栏上输入引入文件的地址(inc为扩展名),就可以浏览该引入文件的内容,这是由于在Web Server上,如果没有定义好解析某类型(比如inc)的动态连接库时,该文件以源码方式显示。
  另外,不要把数据库文件放在网站结构内部,这样,当恶意人士获取数据库路径后,就可以轻易获取该数据库,进而肆意更改数据库内容。比较好的做法是,为数据库建立数据源名称DSN(Date Source Name),在DSN中存储了有关连接到指定数据提供者的信息,包括:“数据库的物理位置,用于访问数据库的驱动程序的类型,访问数据库的驱动程序所需要的任何其他参数”,在进行数据库访问时可以直接访问该DSN。
  11、问题:评介Web数据库管理系统时,应该考虑哪些问题?
  答:在评价一个Web数据库管理系统时,必须考虑到三方面的问题:多用户问题;所建立的Web数据库应该是关系型的;数据库的安全性问题。
  12、问题:ADO是什么,它是如何操作数据库的?
  答:ADO的全名是ActiveX Data Object(ActiveX数据对象),是一组优化的访问数据库的专用对象集,它为ASP提供了完整的站点数据库解决方案,它作用在服务器端,提供含有数据库信息的主页内容,通过执行SQL命令,让用户在浏览器画面中输入,更新和删除站点数据库的信息。
  ADO主要包括Connection,Recordset和Command三个对象, 它们的主要功能如下:
  ·Connection对象:负责打开或连接数据库文件;
  ·Recordset对象:存取数据库的内容;
  ·Command对象:对数据库下达行动查询指令,以及执行SQL Server的存储过程。
  13、问题:使用Recordset对象和Command对象来访问数据库的区别在哪里?
  答:Recordset对象会要求数据库传送所有的数据,那么数据量很大的时候就会造成网络的阻塞和数据库服务器的负荷过重,因此整体的执行效率会降低。
利用Command对象直接调用SQL语句,所执行的操作是在数据库服务器中进行的,显然会有很高的执行效率。特别是在服务器端执行创建完成的存储过程,可以降低网络流量,另外,由于事先进行了语法分析,可以提高整体的执行效率。
  14、问题:是否必须为每一个Recordset对象创建一个Connection对象?
  答:可以同时对不同的Recordset对象使用相同的Connection对象,以节省资源。
  15、问题:什么是数据库管理系统(DBMS)?
  答:数据库为了保证存储在其中的数据的安全和一致,必须有一组软件来完成相应的管理任务,这组软件就是数据库管理系统,简称DBMS,DBMS随系统的不同而不同,但是一般来说,它应该包括以下几方面的内容:
  数据库描述功能:定义数据库的全局逻辑结构,局部逻辑结构和其他各种数据库对象;
  数据库管理功能:包括系统配置与管理,数据存取与更新管理,数据完整性管理和数据安全性管理;
  数据库的查询和操纵功能:该功能包括数据库检索和修改;
  数据库维护功能:包括数据引入引出管理,数据库结构维护,数据恢复功能和性能监测。
  为了提高数据库系统的开发效率,现代数据库系统除了DBMS之外,还提供了各种支持应用开发的工具。
  16、问题:当前流行的WEB数据库管理系统有哪些?
  答:当前流行的Web数据库管理系统有微软的SQL Server、Oracle、DB2、Sybase,小规模的企业多使用Access。

 17、问题:在ASP中使用ADO的AddNew方法和直接使用“Insert into...”语句有何不同?哪种方式更好?
  答:ADO的AddNew方法只是将“Insert into ”语句封装了起来,所以,当对大量数据进行操作的时候,直接使用SQL语句将会大大加快存取数据的速度,因为它减少了ADO的“翻译”时间,由于SQL语句所执行的操作是直接在数据库服务器中进行的,尤其在数据量很大的时候有显著的优势。
  18、问题:为什么我在ASP中使用标准的插入记录语句 insert into books(name,email) values(“kitty”, “kitty@263.com”)会出错?
  答:SQL(Structured Query Language/结构式查询语言)是IBM公司在1970年代所发展出来的数据查询语言,它现在已经成为关系型数据库查询语言的标准。SQL语句是一种以英文为基础的程序语言,可以使用它来添加,管理以及存取数据库。
  在SQL语句中添加时的字符串虽然可以使用双引号,但在ASP中却需要使用单引号才能正常执行。所以应当写成insert into books(name,email) values(‘kitty’,‘kitty@263.com’)。
  19、问题:什么是ActiveX 控件? 在哪里可以得到这些ActiveX控件?
  答:Microsoft ActiveX控件是由软件提供商开发的可重用的软件组件。除了ASP的内嵌对象外,另外安装进来的ActiveX控件也可以在ASP中使用,这样可以节省许多宝贵的开发时间,在ASP中其实也内嵌了很多的ActiveX控件可以使用
  使用ActiveX控件,可以很快地Web应用程序、以及开发工具中加入特殊的功能。例如,使用AdRotator对象来制作广告滚动板,使用FileSystemObject对象进行文件存取,使用Marquee对象实现滚动文字。
  现在,已有1000多个商用的ActiveX控件,开发ActiveX控件可以使用各种编程语言,如C,C++等,以及微软公司的 Visual Java开发环境Microsoft Visual J++。 ActiveX控件一旦被开发出来,设计和开发人员就可以把它当作预装配组件,用于开发客户程序。以此种方式使用 ActiveX控件,使用者无需知道这些组件是如何开发的,在很多情况下,甚至不需要自己编程,就可以完成网页或应用程序的设计。
  目前由第三方软件开发商提供的商用控件有1000多种。微软ActiveX组件库(ActiveX Component Gallery)中存着有关信息以及相关的连接,它们指向微软及第三方开发商提供的各种 ActiveX 控件。在微软ActiveX组件库(ActiveX Component Gallery)中,可以找到开发Internet增强型ActiveX 控件的公司列表。

  20、问题:为什么使用strStartPort=(Request.Form ("catmenu_0")语句取到表单中起始站点的值在数据库却找不到?
  答:这是因为取到的起始站点的值可能有空格,比如原意是“杭州”,但是由于空格存在,ASP程序取到的值可能就是“ 杭州”,而数据库中只有“杭州”的记录,当然就找不到了,解决的方法是利用Trim 函数将字符串两头空格全部去除,相应的语句为:
strStartPort=TRIM(Request.Form("catmenu_0"))
  21、问题:在ASP中当变量的生命周期结束后,有几种保留变量内容的方法?
  答:任何导致网页结束的操作,比如当按下浏览器的“刷新”按钮,或者关闭了浏览器,再重新打开它,都会导致变量生命周期的结束。
  如果希望在网页结束执行时,还能够保留变量的内容,以备下一次执行时使用,就可以借助Application对象来实现。比如可以利用Application对象来制作统计网站访问量的计数器。
  Session对象跟Application对象一样,可以在网页结束时将变量的内容存储下来,但是与Application对象不同的是,每个联机是一个独立的Session对象,简单地说就是所有联机上网者只会共享一个Application对象,但每位联机上网者却会拥有自己的Session对象。
  Application对象与Session对象可以帮我们把信息记录在服务器端,而Cookies对象则会借助浏览器提供的Cookies功能将信息记录在客户端。有一点要注意,Cookies是记录在浏览器的信息,所以数据的存取并不象存取其他ASP对象(信息存储在Server端)那么简单,就实际运行来看,只有在浏览器开始浏览Server的某一网页,而Server尚未下载任何数据给浏览器之前,浏览器才能够与Server进行Cookies数据的交换。
  22、问题:对象使用完后应该怎么办?
  答:当使用完对象后,首先使用Close方法来释放对象所占用的系统资源;然后设置对象值为“nothing”来释放对象占用的内存,否则会因为对象太多导致WEB服务站点运行效率降低乃至崩溃,相应语句如下:
  <%
  对象.close
  set对象= nothing
  %>

  23、问题:在ASP文件中读取HTML的表单字段有几种方法?
  答:Request对象除了可以用来读取附带在网址后面的参数以外,也可以读取HTML表单字段的内容,经常使用的语法结构如下:
  < Form name =Formname method=“Get|Post”Action=“URL”>< Form >
其中的method可以接受Get或Post两种传输的方法,其中的Post是允许传输大量数据的方法,而Get方法会将所要传输的数据附在网址后面,然后一起送达服务器,因此传送的数据量就会受到限制,但是执行效率却比Post方法好。
  使用Get或Post方法都可以将数据送至服务器,使用Request对象接收数据的相对应方法如下:
  Get:Request.QueryString(“字段名称”),也可以写成Request (“字段名称”)
  Post:Request.Form (“字段名称”),也可以写成Request (“字段名称”)
  24、问题:如何提高使用Request集合的效率?
  答:在使用Request集合时,由于包含了一系列对相关集合的搜索,这比访问一个局部变量要慢得多。因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量。
  25、问题:在ASP页面中既可以使用VBScript,也可以使用Jscript,混合使用脚本引擎好吗?
  答:虽然在ASP页面中既可以使用VBScript,也可以使用JScript。但是在同一个页面上同时使用JScript和VBScript则是不可取的。因为服务器必须实例化并尝试缓存两个(而不是一个)脚本引擎,这在一定程度上增加了系统负担。因此,从性能上考虑,不应在同一页面中混用多种脚本引擎。

  26、问题:当我们建立了一个ASP文件,并且符合语法时,通过浏览器输入以下地址,或通过资源管理器打开浏览:c:\inetpub\wwwroot\a.asp,将出现无法运行的错误,并提示权限不对或文件无法访问,为何不能正常运行ASP文件?
  答:这是因为ASP文件首先要求站点是具备“执行(脚本)”属性的;然后要求按照URL格式输入地址,而不是DOS格式,我们需要在电脑上安装好并启动Web服务平台,并确保ASP文件存放在Web服务器的虚拟目录下,就可以通过HTTP的格式来浏览,在浏览器的地址栏输入:“http:// Web站点名称(或站点的IP地址)/ASP文件名称”,回车后就可以在浏览器中看到服务器执行ASP文件的结果。
  27、问题:什么是ASP.NET?它与ASP有什么关系?
  答:Active Server Pages(ASP,活动服务器页面)就是一个比较简单编程环境,在其中,可以混合使用HTML、脚本语言以及少量组件来创建服务器端的Internet应用程序;
  ASP.NET是微软力推的功能强大的编程环境,可以使用C#等多种高级语言及脚本语言、HTML、XML、XSL等来创建基于网络的应用程序。ASP.NET将C#作为一种面向对象语言,在很多方面来看,C#将成为微软的与Java相似的语言。 C#是ASP.NET开发中一个最重要的功能,微软会将C#发展成为Java的强劲对手。这也是微软.Net框架的一个重要组成部分。我认为C#是微软在编程语言领域击败对手的主要工具。
  ASP.NET在面向对象性、数据库连接、大型站点应用等方面都优于ASP程序,ASP.NET还提供更多的其他方面的新特性,例如:内置的对象缓存和页面结果缓存;内置的XML支持,可用于XML数据集的简单处理;服务器控制提供了更充分的交互式制等。
  ASP.NET依然完全锁定在微软的操作系统中,要真正发挥ASP.NET潜力,你要使用C#或vb.net。这两种语言将成为ASP.NET标准的核心的脚本语言。

[DISABLELBCODE]
作者: rootkitcn    时间: 2004-8-19 00:57     标题: [推荐]ASP设计常见问题及解答精要

不错哦。我把它加入到FAQ里面去。
作者: 程序人生    时间: 2004-8-19 20:53     标题: [推荐]ASP设计常见问题及解答精要

这么好的帖子真竟然好意思不给个精品帖啊??
作者: rootkitcn    时间: 2004-8-19 21:05     标题: [推荐]ASP设计常见问题及解答精要

不是此意思,主要是因为上面的固顶贴太多了。我会帮你申请加威望的。
作者: Ace    时间: 2004-8-24 04:03     标题: [推荐]ASP设计常见问题及解答精要

好贴啊,应该加精
作者: 程序人生    时间: 2004-8-25 06:15     标题: [推荐]ASP设计常见问题及解答精要

是吧!你看看,这可是群众的呼声哦![DISABLELBCODE]
作者: ttzplg    时间: 2004-9-11 03:07     标题: [推荐]ASP设计常见问题及解答精要

应该加精哈
作者: 程序人生    时间: 2004-9-12 07:18     标题: [推荐]ASP设计常见问题及解答精要

嘿嘿.....不加就不加吧,
希望大家继续补充完善哦!
作者: blueblueice    时间: 2004-9-17 09:33     标题: [推荐]ASP设计常见问题及解答精要

用asp的话一定要用sql数据库吗??
作者: 程序人生    时间: 2004-9-18 20:24     标题: [推荐]ASP设计常见问题及解答精要

[这个贴子最后由程序人生在 2004/09/18 08:41am 第 1 次编辑]

不是,任何一种 ODBC 兼容的数据库和 OLE DB 兼容的数据源都可以。
比如我们常见的 ACCESS, SQL, ORACLE ,VF ,甚至EXCEL  等
:em02:
作者: zyzcj    时间: 2004-9-26 22:09     标题: [推荐]ASP设计常见问题及解答精要

写的很好啊
我很喜欢啊
谢谢
作者: 冰之仪    时间: 2004-9-27 09:44     标题: [推荐]ASP设计常见问题及解答精要

我也喜欢,但不是很懂
作者: 程序人生    时间: 2004-9-30 08:30     标题: [推荐]ASP设计常见问题及解答精要

不懂不要紧,慢慢学吧,
如果真想学,最好还是找本ASP的教程来学,不懂的地方再来问大家
作者: 程序人生    时间: 2004-9-30 13:16     标题: [推荐]ASP设计常见问题及解答精要

ASP记录集,希望对大家有帮助

问:为什么我的记录集的RecordCount值总是返回-1?
答:你应当使用这种模式来打开存取数据库的记录集:
     rec.open strSQL,conn,1,1
     其中的strSQL是*作数据库的SQL语句;conn是联接数据库的Connection
变量。

问:我在ASP脚本中写了很多的注释,这会不会影响服务器处理ASP文件的速    
     度?
答:经国外技术人员测试,带有过多注释的ASP文件整体性能仅仅会下降0.1%,也就
是说基本上不会影响到服务器的性能下降的。

问:我需不需要在每个ASP文件的开头使用<%@LANGUAGE=VBScript%>?
答:如果你使用的脚本语言就是VBScript的话,请尽量不要使用这个语句,否则程序
整体性能将会下降将近1.2%,但是如果你使用的并不是VBScript语言的话,请使用
个语句。

问:我有没有必要在每一个ASP文件中使用“Option Explicit”?
答:你最好这样,因为这样可以使得你的程序出错机会降到最少,并且会提升整体性
能将近9.8%

问:最近随同IIS5.0一起出现的ASP3.0有何新的功能?
答:其实并没有什么新的变化,但是新增加了两个Server对象的方法:
Server.Transfer以及Server.Excute,还有一个新的对象ASPError。具体的使用
法请参考微软的网站:www.microsoft.com

问:为什么我使用Response.Redirect的时候出现错误?
答:最常见的原因就是你在写入页面之后对HTTP标题进行了修改,解决的方法是在页
面的开始写上<%Response.Buffer=True%>  

问:好像Redirect方法只可以重新定向到同一帧里面,可不可以定向到其他帧呢?
答:可以,要加上这个:<BASE Target="FrameName">。然后,当你再使用
Redirect方法的时候,就会重新定向到名字叫做FrameName的帧里面了。

问:为什么我使用“Window.open()”方法打开的新窗口的ASP页面中经常会出现
Session丢失的现象?
答:在微软的IE4.x会经常出现这种情况,但IE5.x中已经解决了这个错误。所以,为
了兼容所有的浏览器,你可以使用诸如“test.asp?name=xxx”的方式来在窗口之间
传递参数,这样的效果更好,只是要注意,如果传递的参数很重要,请不要使用明文
方式进行传递,否则很容易导致安全问题。

问:经常看到联接数据库有两种方式DSN以及DSN-LESS,两者是什么意思?有什么不
同吗?
答:DSN是英文“Data Source Name”的缩写,DSN方式也就是采用数据源的联接方
式,这个数据源可以在“控制面板”里面的“ODBC Data Sources”中进行设置,然
后就这样使用
Conn.Open "DSN=Test;UID=Admin;PWD=;"
其中的“Test”就是你自己设定的数据源的名称。注意,要同时使用UID以及PWD,否
则会出错。
同样的,DSN-LESS就是非数据源方式的联接方法,使用方法是:
Conn.Open "Driver={Microsoft Access Driver
(*.mdb)};Dbq=\somepath\mydb.mdb;Uid=Admin;Pwd=;"
在相同的硬件环境下,DSN-LESS方式要比DSN方式的性能要高,但是一旦ASP源代码因
为某些安全问题而被别人的到,将会泄漏数据库的账号以及密码,所以这两种方式是
个有利弊的。

问:在ASP中使用ADO的AddNew方法和直接使用“Insert into...”语句有和不同?
那种方式更好?
答:ADO的AddNew方法只是将“Insert into ”语句封装了起来,所以,当对大量数
据进行*作的时候,直接使用SQL语句将会大大加快存取数据的速度,因为他减少了
ADO的“翻译”时间。虽然SQL语句不如AddNew等语句容易接受,但是学习一些常用的
SQL语句在进行数据库编程中是非常重要的。

问:为何我将这句话(“Let';s go now!”)插入到数据库中的时候会发生错误?
答:因为大多数的数据库(Access,MS SQL Server)都把单引号当作分割符号使用
的,所以不可以直接将单引号插入到数据库中,你必须在执行SQL语句之前,分别将每
一个单引号替换成两个单引号:
MyData=Replace(MyData," '; "," ';'; ",1)然后,在保存到数据库中就行了


作者: yuyu992    时间: 2004-10-1 03:25     标题: [推荐]ASP设计常见问题及解答精要

程序人生,你好,请问asp可以用vb 语言吗?
作者: 程序人生    时间: 2004-10-7 10:01     标题: [推荐]ASP设计常见问题及解答精要

ASP用的VBScript相当于VB的一个子集,很多内容都是与VB相通的,但它不同于VB.VB是面向对象的程序语言.
作者: chahua    时间: 2004-10-12 07:02     标题: [推荐]ASP设计常见问题及解答精要

上面的“FAQ”是什么啊?
“OLE DB”数据库是哪三个单词的缩写啊?
作者: chahua    时间: 2004-10-12 07:04     标题: [推荐]ASP设计常见问题及解答精要

上面的“FAQ”是什么啊?
“OLE DB ”是哪三个单词的缩写啊?
作者: 程序人生    时间: 2004-10-13 00:19     标题: [推荐]ASP设计常见问题及解答精要

FAQ:常见问题解答
OLE DB
什么是OLE
    OLE(Object Linking and Embedding)的中文意思是“对象连接与嵌入”,是在Windows环境下实现不同Windows实用程序之间共享数据和程序功能的一种方法,是各类开发工具中不可忽视的一种编程技术。
ole db是microsoft最新的数据访问工具,它可以提供访问各种各样的数据源的手段。ole db不能从visual basic直接进行访问,但可以通过称为ado的com接口对它进行访问,ado可用于各种程序设计语言,包括象vbscript和active server page这样的语言。因此,ado也是开发基于web数据库应用软件的最佳手段。

作者: 程序人生    时间: 2004-10-14 07:04     标题: [推荐]ASP设计常见问题及解答精要

配置IIS显示详细的错误信息
我们开发asp程序必须要调试的,调试信息对我们是很重要的,不象一般的浏览者,直接打印出错误语句出来显得十分的不友好。所以,IIS缺省的设置是不显示详细错误信息的。作为开发者,我们就需要更改这个默认的设置来适合我们的开发工作。
  打开IIS管理器,找到你工作的虚拟路径(也可以直接在web站点上,这样这个站点的所有虚拟路径将会继承这一设置)。在其上点  右键-属性,找到“自定义错误信息”属性页,向下拉动那个属性页上的滚动条到最底,看到第三行:500:100....(一般的错误信息都是这个),选中,点下下面的按钮“设为默认值”,确定后就可以了。
  浏览器端,IE的菜单“工具”-“internet选项”,“高级”属性页,拖动滚动条到最后,倒数第9行“显示友好HTTP错误信息”前面的勾去掉,确定即可。
这样,你在做asp开发的时候,就可以直接在浏览器里面看到详细的错误信息了,在到这里来问问题的时候,最好能把这个详细的错误信息一并贴过来,会很方便别人帮你解决问题的。
作者: 在在在在    时间: 2004-10-16 22:08     标题: [推荐]ASP设计常见问题及解答精要

你好

作者: 程序人生    时间: 2004-10-17 11:21     标题: [推荐]ASP设计常见问题及解答精要

在在在在  :
    有什么事么?
作者: 程序人生    时间: 2004-10-20 01:08     标题: [推荐]ASP设计常见问题及解答精要

问: 如何禁止浏览器缓存某一页面?
答:
使用<META HTTP-EQUIV=";Pragma" CONTENT="no-cache">是不起作用的,IE仍然会cache数据的。
通常 ie 在一页的数据没有满32K时它是不会缓存的。
如果把 no-cache 直接放在最前面的话,只要缓存中的数据没有到32K,当时ie是不会缓存的,但是当读过了no-cache标
志,到了HTML其他部分时,如果数据超过了32K,IE仍然会将数据缓存起来。
这是由于IE分析一个页面的语法时是从上到下读取的,正确的方法如下:
    <HTML>
    <HEAD>
      <META HTTP-EQUIV="REFRESH" CONTENT="5">
      <TITLE> 你的标题 </TITLE>
    </HEAD>
    <BODY>
       你的页面的其它部分。。。。。
    </BODY>
    <HEAD>
      <META HTTP-EQUIV=";PRAGMA" CONTENT="NO-CACHE">
    </HEAD>
    </HTML>
作者: 程序人生    时间: 2004-10-20 01:13     标题: [推荐]ASP设计常见问题及解答精要

问: 为什么 Sessions 突然消失了?
答:
session很象临时COOKIE,只是信息保存在服务器上。(客户机上保存的是SessionID)所以有很多的原因来解释你的session变量为什么会消失。
使用者的浏览器不接受cookie。session依赖于cookie才能跟踪用户。session在一段时间后过期了。通常是20分钟后失效。
如果你希望更改它,你可以使用 Microsoft Management Console(Web directory -> Properties -> Virtual directory -> Application settings -> Configuration -> App Options -> Session timeout)
这可以改变在那个web上使用的所有session的超时时间。
你也可以在ASP脚本中设定。
这么写:Session.Timeout=60 '; 设定超时时间为60分钟 。


作者: 程序人生    时间: 2004-10-20 01:23     标题: [推荐]ASP设计常见问题及解答精要

装了photoshop 我一点击*.asp文件,立马启动photoshop

问: 装了photoshop5我一点击*.asp文件,立马启动photoshop,如何解决这个问题?
答: 先点ASP文件,然后同时按鼠标的右键和键盘的SHIFT键,选打开方式就行了。
顺便说一句:你这样打开ASP文件是执行不了,ASP要通过服务器来解释才能执行。
===========================================================================
为何我在asp程序内使用msgbox,程序出错说没有权限  
问:为什么我在asp程序内使用msgbox程序出错说没有权限?
答:由于asp是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你 (  :) 呵呵  )没有权限。但是ASP和客户端脚本结合倒可以显示一个对话框,
as follows:
    <%
    yourVar="测试对话框"
    %>
    <script language=';javascript';>
    alert("<%=yourVar%>")
    </script>


作者: 程序人生    时间: 2004-10-20 10:41     标题: [推荐]ASP设计常见问题及解答精要

问:怎样才能将query string从一个asp文件传送到另一个

答: 前者文件加入下句:
Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))

====================================================================================
问:怎样才能知道访问者的浏览器类型?  
答:Request.Servervariables("HTTP_USER_AGENT")
====================================================================================
问:怎样才能知道访问者从哪里来?
答:
Request.ServerVariables("HTTP_REFERER")
====================================================================================
问:当我从数据库读取数据时,怎么用来代替换行符
答:
test = rs("content")
test = Replace(test, vbCrLf, "<br>")
Response.Write test

=======================================================================================
如何根据变量的值改变选择列表的值?

问: 例如:我做asp文件,内有一列表,选项为“中国”,“美国”,“其它”,
默认为“中国”。
form 提交给此asp文件,同时传送一变量,内容为“美国”,此变量如何影响列表?
答:
<%
  selection=request("myselect")
%>
<select name=myselect>
<option <%if selection="中国" then response.write " selected "%> value="中国">中国</option>
<option <%if selection="美国" then response.write " selected "%> value="美国">美国</option>
<option <%if selection="其他" then response.write " selected "%> value="其他">其他</option>
</select>
====================================================================================
问: 如何把自己主页让别人放到收藏夹里跟着一个图标?
答:
<link REL="SHORTCUT ICON" href="icon.ico">
icon.ico是一个图标文件,你可以使用一些工具编辑
比如vc++有编辑ico文件的功能。
==================================================================================
response.redirect 导致错误怎么解决?  

问:response.redirect 导致错误
The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing page content ,怎么解决?
答:
HTTP 标题已经写入到客户浏览器。
任何 HTTP 标题的修改必须在写入页内容之前。
在你的文件开始<@ Language=...>后写:
Response.Buffer = True
在结尾写:Response.Flush
=======================================================================================
问:为什么global.asa文件总是不起作用?  
答: 只有web目录设置为web application, global.asa才有效,并且一个web application的根目录下 global.asa 才有效。
IIS5可以使用 Internet Service Manager 设置 application setting
=========================================================================================
问:odbc和ole db在连接数据库时有什么区别?

答:值得注意的是,OLE DB对ODBC的兼容性,允许OLE DB访问现有的ODBC数据源。其优点很明显,由于ODBC相对OLE DB来说使用得更为普遍,因此可以获得的ODBC驱动程序相应地要比OLE DB的要多。这样不一定要得到OLE DB的驱动程序,就可以立即访问原有的数据系统。
    提供者位于OLE DB层,而驱动程序位于ODBC层。如果想使用一个ODBC数据源,需要使用针对ODBC的OLE DB提供者,它会接着使用相应的ODBC驱动程序。如果不需要使用ODBC数据源,那么可以使用相应的OLE DB提供者,这些通常称为本地提供者(native provider)。
  可以清楚地看出使用ODBC提供者意味着需要一个额外的层。因此,当访问相同的数据时,针对ODBC的OLE DB提供者可能会比本地的OLE DB提供者的速度慢一些。  

作者: 程序人生    时间: 2004-10-20 10:48     标题: [推荐]ASP设计常见问题及解答精要

问:较长text型数据无法在Asp页面中取出的解决办法

答:在Asp页面中向记录集取长text型数据时,出现如下错误现象时:
Microsoft OLE DB Provider for ODBC Drivers 错误 ';80040e21';
Errors occurred
可有以下三种解决办法:
(一)使用rs.open sql,conn,1,3方式打开记录集
(二)将该列放在第一列取出,比如comment里存放有较长的text内容,取记录集内容的时候,先来个comment=rs("comment")把这个捣蛋的东西先取出来放到内存变量中,然后再操作其它的字段。由于一般长text内容不会在第一个显示,因此一般都要取出来放到内存变量中。
(三)改为oledb方式连接数据库。在此方式连接数据库时,不会出现该错误(起码我没有遇到过)。在我的系统中,将现在的oledb连接方式改成odbc连接方式后,错误就马上出现了。
此错误怀疑是由于Asp向odbc返回的记录集取数据的机制有些问题造成。建议采用第三种方法避免该错误。
========================================================================================
问:如何检测备注字段的字节数

答:视服务器操作系统语种不同,而采取不同的方法:
1.E文下,len(rs("field")),就行了.len("中文abc")=7
2.Z文下,复杂一点,len("中文abc")=5
lenB("中文abc")=10,所以需要自己写程序判断其长度.
function strLen(str)
 dim i,l,t,c
 l=len(str)
 t=l
 for i=1 to l
   c=asc(mid(str,i,1))
   if c<0 then c=c+65536
   if c>255 then
    t=t+1
   end if
 next
 strLen=t
end function 

=====================================================================================
问:怎样使得htm文件如同asp文件一样可以执行脚本代码?

答:
Internet Sevices Manager -> 选择default web site ->右鼠键->菜单属性-〉主目录-> 应用程序设置(Application Setting)-> 点击按钮 "配置"-> app mapping ->点击按钮"Add" ->
executable browse选择 \WINNT\SYSTEM32\INETSRV\ASP.DLL
EXTENSION 输入 htm
method exclusions 输入PUT.DELETE
全部确定即可
但是值得注意的是这样对htm也要由asp.dll处理,效率将降低。

=====================================================================================
问:密码验证,要如何不区分大小写?
答:
user_password = ucase(request("user_password"))
加一个Ucase都大写即可,不然也可以Lcase都小写^_^

=======================================================================================
问:没有定义变量的问题
在ASP有用Dim预先定义变量是非常好的习惯,可我碰到这样的问题:
用存储过程取出一个结果集,其中一个字段为smallDate类型,缺省值为Null,这里为';2001-4-4';,做如下判断:
...
<Table>
...
</Table>
<%
IF Not IsNull(oRs("E_DT")) Then
%>
 <Table>
 ...
 </Table>
<%
End IF
%>
可显示出来的日期却是1899-12-30
在判断前加上 Response.Write oRs("E_DT")居然为空。
后来改为:
<%
Dim strBack
IF IsNull(oRs("E_DT")) Then
  strBack = "0"
Else
  strBack = "1"
End IF
%>
...
<Table>
...
</Table>
<%
IF strBack = "1" Then
%>
 <Table>
 ...
 </Table>
<%
End IF
%>
就正确了,在判断前加上 Response.Write oRs("E_DT")也显示正常了。
真是怪事,看来用Dim时要当心些,宁愿多加几个变量上去。

=======================================================================================


作者: 程序人生    时间: 2004-10-20 10:57     标题: [推荐]ASP设计常见问题及解答精要

自动编号
问:自动编号好像没这个功能耶~
答:用程序吧...
若前三码是固定的,就先抓出前三码
在转数值,取最後一码在加一..
sql="select * from tt where mid(id,1,1)=’J’"
set rs =conn.execute(sql)
if rs.eof then
id1="J00000001"
else
do while not rs.eof
id=id+1
rs.movenext
loop
id=id+1
for i=1to(8-clng(len(id)))
insect_id="0" & id
next
id1="J" & id
end if
=====================================================================================
问:什么函数能判断一个数是奇数还是偶数?
答:
function Is_odd(num) as boolean
n=num mod 2
if n=1 then
Is_odd=true
else
Is_odd=false
end if
end function
是奇数返回真,是偶数返回假。

======================================================================================
问: 有没有办法保护自己的源代码,不给人看到
答:
可以去下载一个微软的Windows Script Encoder,它可以对asp的脚本和客户端javascript/vbscript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装一个ie5就有了)才能执行。
相关联接:
http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10en.exe

==========================================================================================
问:如何将数字显示时能有千位(,)符号
如 某资料库总计栏位金额为123456789 显示时能以此 123,456,789 方式展现吗?
答:
FormatNumber(TEST, 0)
=====================================================================================

问: 如何以十六进制显示字串数据?
答:sub ShowHex(data)
  dim l
  dim i
  dim ch
  l=lenB(data)
  for i = 1 to l
    ch=midB(data,i,1)
    h=trim(hex(ascB(ch)))
    if len(h)=1 then
      h="0"+h
    end if
    response.write h+" "
    if i mod 15 =0 then
      response.write " <BR>"
    end if
  next
end sub

作者: 程序人生    时间: 2004-10-20 11:01     标题: [推荐]ASP设计常见问题及解答精要

问:如何判别闰年  
答:
<body bgcolor="&#35;FFFFFF">
<div align="center"><font color="&#35;FF0000"><b>闰年判别 </b></font><b></b> </div>
<%
if Request.Form("cal")="y" then
n=Cint(Request.form("me"))
if ((n mod 4=0) and (n mod 100<>0)) or (n mod 400=0) then
Response.Write n & "是闰年! <br>"
else
Response.Write n&"不是闰年。<br>"
end if
end if
%>
<form method="post" action="try2.asp">
输入年份:
<input type="text" name="me" size="5">
<input type=hidden name=cal value=y>
<input type="submit" name="Submit" value="提交">
</form>
=======================================================================================

问:如何插入Access库记录后马上得到自动编号值
答:首先须保证获得记录集的方式支持bookmark属性,如1,3
插入一条带自动编号字段的记录后,获取该记录的bookmark属性值
temp = rs.bookmark
然后
rs.bookmark = temp
试试!!
Response.write rs.Fields("ID").Value
=======================================================================================
问:如何避免重复定义数组
答:
 当我们在使用dim时,避免重新定义数组。因为你可能要用redim去重新定义数
组的大小。至于要做这样的操作的话,如果你的机器内存不是很大,那么最好在
一开始就考虑到最坏的打算去设置数组的长度或者设置最佳状态时的长度,在非
常必要时才使用redim。当然这样并不意味着要去增加内存,如果你不是很需要的
话。
以下举例说明不恰当的使用redim
<%
dim MyArray()
Redim MyArrray(2)
MyArray(0) = "hello"
MyArray(1) = "good-bye"
.
.
.
some other code where you end up needing
more space happens then ...
Redim Preserve MyArray(5)
MyArray(2) = "more stuff"
MyArray(3) = "even more stuff"
MyArray(4) = "yet more stuff"
%>
其实在开始就定义myarray(5),而以后需要的话再用redim去增加他的大小,
这样的话可能会占用一些内存,但速度就要快得多了。

=========================================================================================
问:如何取得所有的Session变量
答:
 在程序调试中,有时候需要知道有多少Session变量在使用,她们的值如何?由于Session对象提供一个称为Contents的集合(Collection),我们可以通过For...Each循环来达到目标:
Dim strName, iLoop
For Each strName in Session.Contents
Response.Write strName & " - " & Session.Contents(strName)& "<BR>"
Next
一般情况下,上面的代码可以工作得很好。但当Session变量是一个对象或者数组时,打印的结果就不正确了。
这样我们修改代码如下:
';首先看看有多少Session变量在使用?
Response.Write "There are " & Session.Contents.Count & _
" Session variables<;P>"
Dim strName, iLoop
';使用For Each循环察看Session.Contents
';如果Session变量是一个数组?
If IsArray(Session(strName)) then
';循环打印数组的每一个元素
For iLoop = LBound(Session(strName)) to UBound(Session(strName))
Response.Write strName & "(" & iLoop & ") - " & _
Session(strName)(iLoop) & "<BR>"
Next
Else
 ';其他情况,就简单打印变量的值
Response.Write strName & " - " & Session.Contents(strName) & "<BR>"
End If
Next
Session变量有时候不能工作,为什么?
有很多可能性:
第一,如果客户端不允许cookie操作,session将失效。因为session是依赖于cookie的。
第二,session有失效时间的设定。缺省的设置是20分钟。你可以这样修改它:Web directory -> Properties -> Virtual directory -> Application settings -> Configuration -> App Options -> Session timeout
或者在ASP中,写上这样的代码:Session.timeout=60 。
第三,session是和具体的Web Application相关的。如果用户从/products/default.asp浏览到/jobs/default.asp,也可能造成session的重新创建。
怎么清除一个不再需要的session变量但不使session失效?
在ASP3.0中:
Session.Contents.Remove "变量名"
可以清除一个变量。
在ASP2.0中:
set session("变量名")=NULL
可以清除变量。
在ASP3.0中,
Session.Contents.RemoveAll
可以清除所有的session变量和session.abandon不同,上面的方法都不会使目前的session过期或者无效。
ASP页面顶端的<%@ ENABLESESSIONSTATE=True %>是什么意思?
IIS使用一种叫做Session跟踪的技术,来保证各个Session变量在每个页面是可用的。当用户访问某个ASP页面时候,IIS会首先为这个页面准备好各个Session变量,这当然会带来性能上的影响。(使用Session变量的代价总是很高的!)
如果你有100个页面,而只有5个页面用到了Session,那么,为了整体的性能,你只需要在那5个页面设置:
<%@ ENABLESESSIONSTATE=True %>
而其他页面设置为:
<%@ ENABLESESSIONSTATE=False %> 


作者: 程序人生    时间: 2004-10-20 11:05     标题: [推荐]ASP设计常见问题及解答精要

问:如何使replace方法不区分大小写
答:
被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。
Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已经被替换为 string2。如果没有找到匹配的文本,将
返回原来的 string1 的副本。
下面的例子说明了 Replace 方法的用法。
Function ReplaceTest(patrn, replStr)
 Dim regEx, str1        '; 建立变量。
 str1 = "The quick brown fox jumped over the lazy dog."
 Set regEx = New RegExp        '; 建立正则表达式。
 regEx.Pattern = patrn        '; 设置模式。
 regEx.IgnoreCase = True        '; 设置是否区分大小写。
 ReplaceTest = regEx.Replace(str1, replStr)     '; 作替换。
End Function
MsgBox(ReplaceTest("fox", "cat"))      '; 将 ';fox'; 替换为 ';cat';。
;另外,Replace 方法在模式中替换 subexpressions 。 下面对以前示例中函数的调用,替换了原字符串中的所有字
对:
MsgBox(ReplaceText("(\S+)(\s+)(\S+)", "&#36;3&#36;2&#36;1"))     '; 交换词对.
要求的脚本语言在5.0以上
===============================================================================================
问:如何在 ASP 中获得系统的信息?  
答:
通过 Windows Scripting object 的 Environment 属性,可以获得系统信息。
下面的例子演示了如何得到处理器的数量:
<%
Set objShell = CreateObject("WScript.Shell")
Set objEnv = objShell.Environment("SYSTEM")
Response.Write "<H4>Number of Processors: " & objEnv("NUMBER_OF_PROCESSORS") & "</H4>"
%>
==============================================================================================

问:浏览器的 Cookies 是否有限制?

答:浏览器只为每一个使用者记录 300 个 Cookies、只为每一个 Web Server 记录 20 个 Cookies、而每一个 Cookies 最大为 4 KB。



作者: 程序人生    时间: 2004-10-21 00:45     标题: [推荐]ASP设计常见问题及解答精要

有关ASP的一些常见问题(一)
1.我想在ASP中从后台自动POST一个FORM出去。怎么才能做到?
可以用asphttp控件
2.如何避免Index Server搜索到ASP文件?
另:IIS 4中文搜索引擎有办法搜索E文吗?
可以把asp放在一目录中,在iis里取消该目录的索引选项。可以查英文.
3.能不能在ASP中实现对服务器上执行本地程序,比如执行一个可执行文件?
答:用aspexec控件
4.有一个程序通过"main.asp?name=';"&someone&"';"链到main.asp,
它是一个框架页我怎么才能在框架页的某一个框架中得到name 值呢?
(如果不用application及session)
答:把框架做成asp,然后在<framset>的src里设成aaa.htm?name=<%=requ...%>
5.怎么建立一个空数据库?
sqlstr="creat table tablename (columnname columntype,...)"
6.如何判断某一个字符是否在字符串里?
InStr([start, ]string1, string2[, compare])
7.有什么方法能够读取一张图片的实际长和宽?
在imglib组件中是:ILIB.PictureSize path+"xxx.GIF", iwidth,iheight
8.收藏夹中的图标怎么设的?
在你服务器的root目录下放一个favicon.ico文件.
作者: 程序人生    时间: 2004-10-21 00:47     标题: [推荐]ASP设计常见问题及解答精要

有关ASP的一些常见问题(二)
1.如何解决有关浏览ASP页面,只在本地缓冲区读出的问题!
Response.Expire =0
2.登录的验证号的生成?
答:
分别输出Hour(LogTime),Minute(LogTime),Second(LogTime)(它们无需加CStr),
CStr(Int(Rnd*10000))看是否有问题。另外,登陆时取得唯一SN可以
用SessionID & Now()
3.原代码泄露?
用webclass 来做,就不用考虑原代码泄露这个问题了。
4.求教,有谁知道网页上的股市行情的定时刷新是怎么实现的吗?
答:可以用javaApplet的通讯功能实现。
网页刷新可以用<body onload="setTimeout(';location.reload()';,5000);">
5。ASP用什么方法把数据库里的图片显示到页面上呢?
答:·response.ContentType="image/jpeg"然后用Response.BinaryWrite输出数据
·response.ContentType="html/image"
6.怎样知道备注字段大小,有朋友说用len(recordset(mem))?
答:如果是数据库字段名可以这样:RS("字段名")(在你那儿应该是RS("ly"))
还可以这样:
如果你的RS是用Select语句建立的,可以用数字来引用
sSql="Select id,ly From 表名"
Set RS=Conn.Execute(sSql)
则RS(0)即指RS("id"),而RS(1)就是RS("ly")
问:就是想得到,像这个论坛里显示贴子大小的方法,如(192 Bytes)
答:ADO中Field对象的ActualSize属性
7。怎么才能输入的文本框中的内容会根据输入时的换行而换行?
答:文本区<textarea>的话属性wrap="OFF"
问:如何实现会根据输入文本的换行。而不是你输入了一大段的文字(中间有回车符)可是从记录中再次调出的时候就没回车符了,只是在应该换行的地方变成了空格。
答:很简单!!
如果从数据库中取出的内容为RS("Content")
<%
Dim sContent
sContent=RS("Content")
sContent=Replace(sContent,Chr(13) & Chr(10),"<Br>")
Response.Write(sContent
%>
如果你还想保存空格,还可以
sContent=Replace(sContent," "," ")
8。如何用ASP技术,将数据库的记录分多行写入一个文本文件?
答:用ADO读数据库,用FileSystemObject写入文件
9。可否写一个简短的用FileSystemObject写文件的小例子?
答:例如:RS为数据库字段,Content为要写入Txt的字段。
%
Dim fs
Dim ts
set fs=Server.CreateObject("Scripting.FileSystemObject")
set ts=fs.CreateTextFile("C:\hzc.txt")
Do while Not RS.EOF
ts.Writelen(RS("Content"))
RS.Movenext
Loop
ts.Close
fs.Close
%>
10。我想在页面中动态加上<select>的<option>,在客户端脚本应该怎么写?
答:
假设:表tableselect存放下拉框内容,content为其中在下拉框中显示的文字,
value为对应的值
<%
Set RS=Conn.Execute("Select Content,Value From tableselect")
%>
<Select name="Select1">
<%Do While Not RS.EOF%>
<Option value=';<%=RS("value")%>';><%=RS("content")%></Option>
<%
RS.MoveNext
Loop
%>
</Select>
11。除了停止服务,还有什么方法可以结束一个application?
答:·Set Application("变量名") = Nothing
· 修改Global.asa文件,存盘,如果该Application正在使用
会造成Application_OnEnd,和Application_OnStart,
相应所有Session也重新起动。
12。如何处理多于255字符的数据?
答:如果是在数据库中,选备注型字段即可。
13。我搞了一个ACCESS数据库的压缩方法,虽然能执行,但并未达到预期效果。有哥们愿意帮我看看吗?
答:使用Compact压缩数据库时需要注意的几个问题:
1.如果你的表中没有主关键字的话,对于提高数据库的效率起的作用就不明显。
因为使用Compact时是按照主关键字的排序将记录从新复制到新的数据库中,
如果没有,那么将按照原来记录的顺序进行复制。。。
2.该方法主要的一个功能时回收在进行数据库Delete后的空间,如果没有频繁
对数据库中的数据进行Delete操作,效果不明显。。。
3.该方法将Reset自动编号中的号码
4.重新生成Query中的统计结果
5.将Query中的在下次运行时需要重新编译的标志复位
这个方法主要是实现以上功能的,更加具体的说明请查阅Office的帮助

作者: 程序人生    时间: 2004-10-21 00:50     标题: [推荐]ASP设计常见问题及解答精要

有关ASP的一些常见问题(三)
1。整个页面没有提交按钮,也没有相关脚本,只有<input type="image">??
第一个问题是HTML的基本常识呀,image元素的默认动作就是submit嘛
2。加入附件之后页面上能显示出该文件的大小,可是页面并没有刷新,
要是asp的话,要用RS吧,就算其他东东客户端也要有相应脚本吧。
可是View Source竟没有一句<script>!!迷惑!
答:第二个问题你描述不正确,其实它是先提交到服务器上处理后,才知道
文件有多大的,至于你说的什么没有刷新,可能是由于你上传的文件小,
速度很快,而且本来那一页就没几个字,所以显示很快了,刷新最明显的
标志是上传文本框内的内容没有了呀。。。
3。一个Form的多个Submit在服务器端怎样判别?没有用Hidden
答:这就是为什么使用image而不使用submit的缘故罗。。。
如果是使用submit的话,由于一个form中只能够有一个submit,而
如果需要完成多个提交的话,就有点不够。。。
但是使用image就可以了,由于点击每个image都相当与submit。。
而且只要在服务端判断Request.Form("image的name.x")是否为空就可以
知道是点击的哪个submit了。。。
一种偷懒的办法哦。。。
4。请讲讲插入图片的方法吧
答:Rnd 没有初始化吧(randomize())

有关ASP的一些常见问题(四)

1.如何在拉动滚动条时,背景图不动?
答:<body topmargin="0" leftmargin="0" background="bkground.JPG" bgproperties="fixed">
2.Sql Server 数据库,想用OLE db连数据库,拜托诸位大虾指教,怎么连呀?
答:<%
set cn=server.createobject("adodb.connection")
cn.provider="sqloledb"
cn.open "driver={SQL server};server=(Local);uid=sa;pwd=;
database=your database"
set rs=......
%>
3.如何定义一个session 数组?
答:Dim MyArray()
Redim MyArray(5)
Session("StoredArray") = MyArray
用的时候这样:LocalArray = Session("StoredArray")
LocalArray(1) = " there"
Response.Write(LocalArray(0)&LocalArray(1))
   -------------------------------------------------------------------------------------------
  上一篇:ASP 编程中 20 个非常有用的例子
  下一篇:ActiveX组件及其注册
   -------------------------------------------------------------------------------------------
用户名:
Email:
评论内容:
 
  精品推荐
网页编程中页面之间值的传
ASP设计常见问题及解答精
在ASP文件中调用DLL
关于ASP连接ACCESS数据库
分析VBS脚本恶意网站!
教你做ASP论坛
每个ASP程序员必备的知识
全面详尽剖析一句话asp木
ASP简单防盗链方法谈
整理ASP的19个基本技巧
ActiveX组件及其注册
ASP 编程中 20 个非常有用
经典!5分钟编写一个ASP论
ASP程序发送信件的几种方
asp程序错误详细说明例表
关于我们 | 发展历程 | 在线投稿 | 核心监督 | 友情链接 | 网站地图 | 网站留言 | 联系我们
Copyright © 2004-2007 Www.Hx99.Net
版本:华西黑盟网站系统V5.0 Email:root#hx99.org
中国·西安·宝鸡 请使用IE6.0版本, 分辩率1024×768进行浏览
版权所有 任意抄袭 注意完整
陕ICP备06000444号