JJB*_*ter 1 c# asp.net dispose sqlcommand
好吧,这是微不足道的,但它一直困扰着我.我有这样的代码
oCmd = new SqlCommand("getBooking", oCon);
oCmd.CommandType = CommandType.StoredProcedure;
oRs = oCmd.ExecuteReader();
do while (oRs.Read()) {
// do stuff
}
oRs.Close();
oCmd.Dispose();
Run Code Online (Sandbox Code Playgroud)
但是我Dispose可以在ExecuteReader这之后移动到:
oCmd = new SqlCommand("getBooking", oCon);
oCmd.CommandType = CommandType.StoredProcedure;
oRs = oCmd.ExecuteReader();
oCmd.Dispose();
do while (oRs.Read()) {
// do stuff
}
oRs.Close();
Run Code Online (Sandbox Code Playgroud)
我试过了,它有效,但感觉就像我在调皮.这种方法有问题吗?我问,因为经常需要重新使用其中的SqlCommand对象do while,而不是我不想创建多个SqlCommand对象.
是的,最好在你完成它们后立即处理它们.重用命令确实没有优势,因此您的代码可能会变得复杂,难以理解和维护.
最好使用它的using语法:
using (var oCmd = new SqlCommand("getBooking", oCon))
{
oCmd.CommandType = CommandType.StoredProcedure;
using (var oRs = oCmd.ExecuteReader())
{
while (oRs.Read()) {
// do stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
当您使用using一次性对象(实现IDisposable)时,Dispose方法将调用Close.你可以为你做同样的事情SqlConnection.