如何设置SQLSTRINGCONNECT()连接等待时间

时间:2021-10-30 07:32:49
在VFP中用SQLSTRINGCONNECT()连接SQL, 当无法连接时要等40秒左右才提示无法连接,请问,如何设置才能自定义这个连接时间,比如说我想当无法连接时5秒后就提示? 
我已设置了SQLSETPROP如下值可是不起作用,WHY ? 
*******  SQL环境设置  ******* 
=SQLSETPROP(0,"DispLogin",3)      &&  控制不显示登录窗口 
=SQLSETPROP(0,'DispWarnings',.F.) &&  不显示一个错误信息 
=SQLSETPROP(0,"Transactions",2)   &&  人工事务 2, 自动处理事务 1 
=SQLSETPROP(0,"Asynchronous",.F.) &&  结果同步返回 
=SQLSETPROP(0,"BatchMode",.T.)    &&  返回全部结果集 
=SQLSETPROP(0,"ConnectTimeOut",5) &&  连接错误等待(以秒计算) 30 
=SQLSETPROP(0,"QueryTimeOut",10)  &&  一般超时等待(以秒计算0~600) 15 
=SQLSETPROP(0,"WaitTime",1000)    &&  检查SQL语句是否结束时间间隔毫秒 500

12 个解决方案

#1


到ODBC中配置一下试试

#2


这可能是ODBC不支持这选项。

#3


楼主的问题是连接时间过长,但我的下列代码当连接错误时很快就提示了(顺便提一句,当把连接等待时间设为600时同样很快提示,说明设置未生效。不知道代码在你的机子上运行会是什么效果。):
*利用spt字符串连接函数直接连接sql数据库
lcODBCDriver="SQL Server" &&驱动器
lcODBCServer="(local)"  &&本地SQL服务器名
lcODBCUID="sa" &&用户名
lcODBCPWD="12" &&密码
lcODBCDatabase="master"  &&数据库
*连接字符串
lcSQLString="driver=&lcODBCDriver;Server=&lcODBCServer;;
UID=&lcODBCUID;PWD=&lcODBCPWD;DATABASE=&lcODBCDatabase"
wait "正在连接sql数据库...." nowait window
sqlsetprop(0,"DispLogin",3)  &&不显示ODBC对话框
sqlsetprop(0,"ConnectTimeOut",5)  &&超时错误(5秒)
lcConnHandle=SQLSTRINGCONNECT(lcSQLString)
if lcConnHandle>0
   messagebox("已成功连接到sql数据库!",64,"连接提示")
   =SQLDISCONNECT(lcConnHandle)
ELSE
   messagebox("连接sql数据库失败!",64,"连接提示")
ENDIF

#4


SQLSETPROP(0,"ConnectTimeOut",5)  &&5秒

ConnectTimeOut
 指定在返回连接超时错误前的等待时间(以秒计)。如果指定为 0,将无限期等待并且不返回超时错误。ConnectTimeOut 可从 0 到 600,默认值是 15。可读/写。
 

#5


你已经设置了:
=SQLSETPROP(0,"ConnectTimeOut",5) &&  连接错误等待(以秒计算) 30

以下两种情况时这个设置有效:
1、网络畅通,用户名不对或密码不对或数据库服务没启动,造成连接不上。
2、网络断开,即找不到数据服务器,造成连接不上。


如果网络是通的,但连接太慢(是太慢,但网络是通的)或网络超时或有丢包等等,这时连接就不止是上面这个5秒了,会长一些。

#6


设置ConnectTimeOut 应该可以

#7


=SQLSETPROP(0,"ConnectTimeOut",5)的位置非常重要.
一定要放在连接数据库的语句之前,否则设置无效.

#8


楼上几种方法都不行,如果是(local)会很快,其它如IP等肯定是15秒
这个设置的确不起作用

#9


帮助文档中提到
ConnectTimeOut 选项只能在 Visual FoxPro 级别上设置,而不能在连接级别上使用。所有其他选项既可在连接级 别,也可在 Visual FoxPro 级别上进行设置,每个在 Visual FoxPro 级别的设置作为随后连接的默认值。

#10


问题是,sqlsetprop(0,"ConnectTimeOut",5)  &&超时错误(5秒) 这句的‘0’没有指定具体的连接句柄,我的理解它就是在Visual FoxPro 级别上,而不在连接级别上。但这样设置不起作用,非常郁闷。

#11


3ks

#12


该回复于2009-03-17 12:16:18被版主删除

#1


到ODBC中配置一下试试

#2


这可能是ODBC不支持这选项。

#3


楼主的问题是连接时间过长,但我的下列代码当连接错误时很快就提示了(顺便提一句,当把连接等待时间设为600时同样很快提示,说明设置未生效。不知道代码在你的机子上运行会是什么效果。):
*利用spt字符串连接函数直接连接sql数据库
lcODBCDriver="SQL Server" &&驱动器
lcODBCServer="(local)"  &&本地SQL服务器名
lcODBCUID="sa" &&用户名
lcODBCPWD="12" &&密码
lcODBCDatabase="master"  &&数据库
*连接字符串
lcSQLString="driver=&lcODBCDriver;Server=&lcODBCServer;;
UID=&lcODBCUID;PWD=&lcODBCPWD;DATABASE=&lcODBCDatabase"
wait "正在连接sql数据库...." nowait window
sqlsetprop(0,"DispLogin",3)  &&不显示ODBC对话框
sqlsetprop(0,"ConnectTimeOut",5)  &&超时错误(5秒)
lcConnHandle=SQLSTRINGCONNECT(lcSQLString)
if lcConnHandle>0
   messagebox("已成功连接到sql数据库!",64,"连接提示")
   =SQLDISCONNECT(lcConnHandle)
ELSE
   messagebox("连接sql数据库失败!",64,"连接提示")
ENDIF

#4


SQLSETPROP(0,"ConnectTimeOut",5)  &&5秒

ConnectTimeOut
 指定在返回连接超时错误前的等待时间(以秒计)。如果指定为 0,将无限期等待并且不返回超时错误。ConnectTimeOut 可从 0 到 600,默认值是 15。可读/写。
 

#5


你已经设置了:
=SQLSETPROP(0,"ConnectTimeOut",5) &&  连接错误等待(以秒计算) 30

以下两种情况时这个设置有效:
1、网络畅通,用户名不对或密码不对或数据库服务没启动,造成连接不上。
2、网络断开,即找不到数据服务器,造成连接不上。


如果网络是通的,但连接太慢(是太慢,但网络是通的)或网络超时或有丢包等等,这时连接就不止是上面这个5秒了,会长一些。

#6


设置ConnectTimeOut 应该可以

#7


=SQLSETPROP(0,"ConnectTimeOut",5)的位置非常重要.
一定要放在连接数据库的语句之前,否则设置无效.

#8


楼上几种方法都不行,如果是(local)会很快,其它如IP等肯定是15秒
这个设置的确不起作用

#9


帮助文档中提到
ConnectTimeOut 选项只能在 Visual FoxPro 级别上设置,而不能在连接级别上使用。所有其他选项既可在连接级 别,也可在 Visual FoxPro 级别上进行设置,每个在 Visual FoxPro 级别的设置作为随后连接的默认值。

#10


问题是,sqlsetprop(0,"ConnectTimeOut",5)  &&超时错误(5秒) 这句的‘0’没有指定具体的连接句柄,我的理解它就是在Visual FoxPro 级别上,而不在连接级别上。但这样设置不起作用,非常郁闷。

#11


3ks

#12


该回复于2009-03-17 12:16:18被版主删除