【发布时间】:2012-02-24 14:31:43
【问题描述】:
我正在尝试更改 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 上设置的值由于某种原因被忽略了。
有什么想法吗?
【问题讨论】:
-
不知道,但msdn.microsoft.com/en-us/library/… 的 MSDN 文档说明了它可能被忽略的几个原因。一种是异步使用和使用 BeginExecuteReader 这不是你的问题。然而,另一个是指超时“..当针对上下文连接执行命令时没有效果(在连接字符串中使用“context connection=true”打开的 SqlConnection)。”也许检查你的连接字符串,看看这是否是原因。
-
是的,我检查了几次文档以确保我没有遗漏任何内容。无论如何,不是异步阅读器,连接字符串也没有任何上下文。
-
与问题无关,但由于您使用的是“使用”块,因此您无需执行 connection.Close(),因为 using 块上的范围结束会自动关闭并处理您的连接