2011-05-30 23 views
0

哪个这些方法是关闭SqlDataReader更好:C#SqlDataReader的Close方法

SqlDataReader reader = comm.ExecuteReader(); 

while (reader.Read()) 
{ 
} 
reader.Close(); 
reader.Dispose(); 

SqlDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection); 
while (reader.Read()) 
{ 
} 

或有再一闭的方法呢?

回答

6

处理这个正确的方法是using声明:

using(SqlDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection)) { 
    while (reader.Read()) 
    { 

    } 
} 

通过这种方式,对象被正确配置(和你不需要调用Close())。

2

A using声明是根据我的经验在这种情况下的最佳实践。它确保连接正确关闭,即使内部发生异常。

using (SqlDataReader reader = comm.ExecuteReader()) 
{ 
    while (reader.Read()) 
    { 
     //Do stuff... 
    } 
} 

当然,你可以做同样的用try { } finally { },这是什么using声明内部做。我发现通过using声明总是处理读者总是处理读者的习惯以避免泄露连接的可能性是一个好主意。

0

如果您在一种方法中使用reader,并且如果您将reader作为返回值(不在一个范围内)传递,则使用第一种方案。