我有这段代码:
SqlConnection conn;
string strconString = System.Configuration.ConfigurationManager.ConnectionStrings["SQLCONN"].ToString();
conn = new SqlConnection(strconString);
string cmdstr = "select status from racpw where vtgid = " + vtgid;
SqlCommand cmdselect = new SqlCommand(cmdstr, conn);
conn.Open();
SqlDataReader dtr = cmdselect.ExecuteReader();
if (dtr.Read())
{
return;
}
else
{
...
}
dtr.Close();
conn.Close();
现在我的问题是。
如果返回,我的连接和 dtr 会自动关闭还是应该使用 bool 变量并在连接关闭后执行返回?
最佳答案
您必须在返回前关闭连接。
最好的方法是使用块,因为 SqlConnection 实现了 IDisposable 接口(interface)。在这种情况下,您不必记住即使抛出异常也必须关闭连接。
请参阅下面的示例:
using (var conn = new SqlConnection(strconString))
{
string cmdstr =
"select status from racpw where vtgid = " + vtgid;
using (var cmdselect = new SqlCommand(cmdstr, conn))
{
conn.Open();
using(var dtr = cmdselect.ExecuteReader())
{
if (dtr.Read())
{
return;
}
else
{
...
}
}
}
}
关于c# 是否关闭 sqlconnection 和 sqldatareader?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4385837/