热血江湖医521:程序生死攸关,跪求高手解决!!!

来源:百度文库 编辑:高考问答 时间:2024/05/04 18:32:46
本人有个纯文学站,4年了一直纯粹投入,付出了大量心血。目前注册用户也有几万了。可是遇到致命问题,就是ACCESS数据库,大概有100M了,在访问高峰期或者遇到调用代码有错(如调用测试时),就会跑死ASP文件,整个站都要几分钟才能恢复,据空间商反映,消耗他的CPU资源也很大,几千元的空间都无法满足了。我怀疑是数据库连接代码不够优化,而且没有一种释放资源智能判别错误连接的功能,代码如下,如有高手为我设计优化代码,感激不尽:

<%
'dim conn
'dim connstr
'dim db
db="data/BB.asp" '数据库文件位置
on error resume next
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
if err then
err.clear
else
conn.open connstr
end if
%>

请问:
1、如果删除 on error resume next 语句 ,是否会对程序有大影响?
2、可否有什么好的代码,在程序遇到打不开的错误时,能自动终止这种死循环,释放出资源。
3、如果哪位弟兄能为我设计或优化这段代码,感激不尽!!!

1、如果删除 on error resume next 语句 ,是否会对程序有大影响?

删除后遇到ASP程序错误的话就会终止执行,并显示错误信息

2、可否有什么好的代码,在程序遇到打不开的错误时,能自动终止这种死循环,释放出资源。

on error resume next就可以

3、如果哪位弟兄能为我设计或优化这段代码,感激不尽!!!
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

你的驱动连接太老了,可以换成

Db = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")

另外你的数据库最好是下载下来整理一下再上传,因为ACCESS数据库在进行数据删除之后磁盘空间并不会回收,如果资金允许,最好是换成SQL SERVER数据库

不知道你的这段连接代码每个session都会调用一次?如果是这样,建议你把conn.open connstr放在application段中,这样修改后让空间商对你的站点执行一次reset操作, 数据库连接负荷会减轻,达到减少系统资源占用的问题,但是单连接的数据量会大大增加,看你的描述好像不应该是论坛那种有很多提交操作的站点,只是大量查询的话这种优化效果是很明显的.

如果这样优化,你的链接代码只会在站点reset后执行一次,所以代码中所有的关于释放conn的代码都可以删除,整个站点使用1个conn操作.由于这样做也有其缺点,所以提出这样一个小建议给LZ做参考.

On Error Resume Next 会使程序按照产生错误的语句之后的语句继续执行,或是按照最近一次所调用的过程(该过程含有 On Error Resume Next 语句)中的语句继续运行。
比如:
IF A="退出" THEN END
WHILE True

WEND
使用了 On Error Resume Next 后又在IF语句出错,就会引起死循环,我这例子也许简单了,但我也不希望这种情况出显,如果只是未了检测一条语句的出错,可以在该条语句后使用On Error Goto 0取消陷阱。
也可以使用On Error Goto [程序标号|函数]。来处理错误。

ACCESS是有访问量限制的
用sql的吧
很容易改的
如有问题
qq214635807

ACCESS是有限制的
sql 就比较好
转数据库 不难转

空间也不太贵 的

兄台,这么重要的事你还有工夫在这里问啊,赶快花钱请人给你弄好啊,这可是你四年心血啊