我正在尝试更改sqlCommand查询的超时时间,该方法用于测试给定连接字符串的连接.代码与此类似:
using (sqlConnection connection = new sqlConnection(connectionString)) { sqlCommand cmd = new sqlCommand("SELECT ...",connection); cmd.CommandTimeout = 10; connection.Open(); sqlDataReader reader = cmd.ExecuteReader(); ... connection.Close(); }
我想在这里有一个短暂的超时,因为我只是想测试这个连接字符串是否可以.
但是,无论我在CommandTimeout上设置了什么数字(我尝试了0,1,2,4,10,30,60,120),我为虚拟连接字符串获得的实时时间总是相同(总运行时间约为15秒).
所以,在我看来,由于某些原因,我在CommandTimeout上设置的值被忽略.
任何想法为什么?
解决方法
我想你真的搞错sqlCommand.CommandTimeout是什么.根据
this MSDN reference:
Gets or sets the wait time before terminating the attempt to execute a command and generating an error.
在您的情况下,您正在执行一个DataReader并逐步浏览查询(无论是什么).每个Read()只需要很少的时间,这就是为什么你不会超过你的超时时间.
编辑:
如果使用错误的连接字符串,则超时不会是命令超时,但它将是连接时间.默认为15秒.那是在您的情况下有效的超时.
你将要调用方法调用sqlConnection.Open(),而不是sqlCommand.ExecuteReader().因此ConnectionTimeout属性将成为有效的超时值.