数据|数据库|问题
问:为什么我的记录集的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)然后,在保存到数据库中就行了。