急!急!急!如何能用asp检测远程数据库无法连接并返回结果(不是通过页面出错来提示结果).
asp页面通过ODBC数据源连接远程数据库,有什么办法可以使客户端发出连接要求后,若在指定时间内都连接不上时或者无法返回响应结果,客户端能关闭连接?
我的目的是要使远程数据库(oracle)不要产生太多进程,既然连接不上了,就关闭连接,以保证在数据库中能关闭该进程.
问题点数:50、回复次数:8Top
1 楼tomtown530(梦想一定会实现!)回复于 2005-11-21 13:21:18 得分 0
on error resume next
conn.open connstr
if err.number <> 0 then
conn.close
set conn = nothing
response.write("can't build connection now.<br>error info:" & err.description)
end ifTop
2 楼fsyxb()回复于 2005-11-21 13:29:33 得分 0
但用on error resume next好象会把所有的错误都跳过的呀!Top
3 楼tomtown530(梦想一定会实现!)回复于 2005-11-21 13:33:23 得分 25
因此把这句只能放在conn.open这句的上面,紧紧跟随,这样检测出来的错误就是连接时的错误.
if err.number <> 0 then
conn.close
set conn = nothing
response.write("can't build connection now.<br>error info:" & err.description)
end if
这些也要紧随conn.open之后
在end if我在补充一句
err.clearTop
4 楼fsyxb()回复于 2005-11-21 13:35:57 得分 0
谢谢,试试,行就马上结贴,不行再请教.Top
5 楼fsyxb()回复于 2005-11-21 15:46:46 得分 0
还是不行,我做了如下的测试页面:
<%public conn
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "ORACLE_TEST","test","test"
on error resume next
if err.number <> 0 then
response.write err.number
conn.close
set conn = nothing
response.redirect "warning.asp?tmperror=13&errinfo="& err.description
end if
err.clear
conn.close
set conn = nothing
response.write err.number
%>
然后在难以连接oracle远程库时执行此测试页,但仍显示err.number值为0,无法跳转到warning.asp,请看看我的程序是否有错!
注:我使用的是win2003ser,IIS中页面超时设为60秒.
Top
6 楼fsyxb()回复于 2005-11-22 09:27:42 得分 0
急!Top
7 楼jspadmin(阿笨狗http://www.pifoo.com域名空间专卖cn20、com50元)回复于 2005-11-22 10:08:06 得分 25
1、直接在数据库里设置响应时间,超时就强行关闭 或2、设置connection对象的属性commandtimeout 3、检测客户端是否在连接状态if response.isclientconnected=false then
-----------------------------------------------------------------------------
欢迎光临我的小站http://www.pifoo.com 有什么问题可以给我留言http://www.pifoo.com/guestbook/ 我的QQ:33323489Top
8 楼fsyxb()回复于 2005-11-22 11:27:22 得分 0
谢谢jspadmin阿笨狗!请教:
1、oracle远程数据库我无权设置,只能连接使用
2、请问如何设置connection对象的属性commandtimeout?
3、我已经设检测客户端是否在连接状态,但我理解只能对下一循环起作用,对当前正在执行的循环应该不起作用,如果我把if response.isclientconnected=false放在conn语句后,那么还没执行到if语句,在conn远程库时已经死机,即使这时客户端关闭页面,也无法执行then的设置,只有等到conn响应了,才能执行then的设置,但这时对我的程序已没多大意义。如果放在conn语句之后,那么当时的客户端肯定是连着的,也不会起作用。Top




