Лучше всего использовать вместо этого блок using
.Это принудительно вызовет Dispose
, даже если вы вернетесь в середине метода:
string strconString = System.Configuration.ConfigurationManager
.ConnectionStrings["SQLCONN"].ToString();
using (SqlConnection conn = new SqlConnection(strconString))
{
string cmdstr =
"select status from racpw where vtgid = " + vtgid;
using(SqlCommand cmdselect = new SqlCommand(cmdstr, conn))
{
conn.Open();
using( SqlDataReader dtr = cmdselect.ExecuteReader())
{
if (dtr.Read())
{
return;
}
else
{
...
}
}
}
}
Это работает, потому что using
на самом деле является блоком try/finally
, и даже если вы вернетесь,Блок finally выполняется и запускается Dispose
на ваших SqlCommand
и SqlDataReader
.