关于QSqlDatabase::open输入错误ip的阻塞问题

Qt5中的QSqlDatabase可用于连接SqlServer,并通过open来打开数据库(建立连接),但是如果设置的数据库IP地址时传入一个错误的IP地址,open就会一直阻塞不会返回。
帮助文档中有关于连接的一些选项,通过QSqlDatabase::setConnectOptions来设置
在这里插入图片描述
其中上述的SQL_ATTR_LOGIN_TIMEOUT和SQL_ATTR_CONNECTION_TIMEOUT看似是与连接相关的选项。
测试发现SQL_ATTR_LOGIN_TIMEOUT是有效的,但是SQL_ATTR_CONNECTION_TIMEOUT无效,查阅资料后发现跟ODBC版本有关
ODBC1.0支持SQL_ATTR_LOGIN_TIMEOUT;
ODBC3.0支持SQL_ATTR_CONNECTION_TIMEOUT;

db.setConnectOptions("SQL_ATTR_LOGIN_TIMEOUT=2");//阻塞两秒
	if (!db.open())
	{
		return false;
	}
	else
	{
		return true;
	}	

但是调试时发现,传入的ip明显错误时(例如196.168.0.999),上述的设置才起效(估计是登录,即检测ip格式),若传入合法ip,则阻塞时间还是很长(50s左右)

查看官方文档发现有这句话

SQL Server本机客户端ODBC驱动程序忽略SQL属性连接超时的设置。

直接用vc库连接sql server结果依旧不变,目前无法解决。。。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值