执行超时关闭IDataReader时已过期

时间:2018-01-31 12:17:20

标签: c# .net idatareader

我正在从SQL Server中检索大量数据。一切正常但当我尝试在中使用语句

关闭IDataReader时
try
    {
      using (SqlConnection con = new SqlConnection(connString))
       {
         con.Open();
         using (SqlCommand command = new SqlCommand(sql_query, con))
         {
           command.CommandTimeout = 0;

           using (IDataReader rdr = new SqlCommand(sql_query, con).ExecuteReader(CommandBehavior.SequentialAccess))
            {
              dataTable = GetDataTableFromDataReader(rdr);
            }
             ....

我得到了: 执行超时已过期。操作完成之前经过的超时时间或服务器没有响应。

使用像 rdr = null 之类的东西会更好吗?或者是否有另一个更好的解决方案如何关闭IDataReader?

1 个答案:

答案 0 :(得分:2)

请注意,连接和命令都有超时设置。您不需要在使用区域内手动关闭或处置。

您正在SqlCommand块中创建第二个using,但没有设置超时。改为:

using (IDataReader rdr = command.ExecuteReader(CommandBehavior.SequentialAccess))
{
    dataTable = GetDataTableFromDataReader(rdr);
}