0

我正在从 SQL Server 检索大量数据。一切正常,但是当我尝试在using语句中关闭 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?

4

1 回答 1

2

请注意,连接和命令都有超时设置。您无需在 using 块内手动关闭或处置。

您在没有设置超时SqlCommand的块中创建第二个。using改成:

using (IDataReader rdr = command.ExecuteReader(CommandBehavior.SequentialAccess))
{
    dataTable = GetDataTableFromDataReader(rdr);
}
于 2018-01-31T12:23:13.990 回答