日期:2014-05-17  浏览次数:20401 次

SqlDataReader有没有必要写两个close?
conn1 f = new conn1();
SqlDataReader da = f.datareader(sql)

da.Close();
f.close();

datareader是自己写的一个conn1类里面的方法,里面也有一个close方法。有没有必要da.Close();

------解决方案--------------------
SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
if(reader.Read())
{
}
reader.Dispose();
------解决方案--------------------
按正常的 做法都是先关闭SqlDataReader 在关闭SqlConnection的
不过你不关闭SqlDataReader直接关闭SqlConnection也没有问题SqlDataReader也直接跟着就关了。
------解决方案--------------------
经验总结
其实重要的是 把Connection关闭,因为连接是比较占用系统资源的
Reader 关不关闭影响不大,你把Connection.close时,如果没有把reader关闭,reader有可能还会占用一些资源.所以还是按规范reader.close(),然后再connection.close(),以后你想在connection.close之前再添加代码也行,容易扩展。