我正在从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?
答案 0 :(得分:2)
请注意,连接和命令都有超时设置。您不需要在使用区域内手动关闭或处置。
您正在SqlCommand
块中创建第二个using
,但没有设置超时。改为:
using (IDataReader rdr = command.ExecuteReader(CommandBehavior.SequentialAccess))
{
dataTable = GetDataTableFromDataReader(rdr);
}