ASP与数据库打交道时,可能会遇到的一些问题!

作者:网络 来源:佚名 更新时间:2008-11-15 10:50:30 点击:
问:为什么我的记录集的recordcount值总是返回-1?

答:你应当使用这种模式来打开存取数据库的记录集:

     rs.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方法只可以重新定向到同一帧里面,可不可以定向到其他帧呢?

答:可以,要加上这个:。然后,当你再使用
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)然后,在保存到数据库中就行了。