c#关闭sqlconnection和sqldatareader与否?

Ben*_*Ben 4 c# sqlconnection sqldatareader

我有这段代码:


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();
Run Code Online (Sandbox Code Playgroud)

现在我的问题是.如果返回,我的连接和dtr是自动关闭还是我应该使用bool变量并在我的连接关闭后执行返回?

Ego*_*4eg 9

您必须在返回前关闭连接.最好的方法是USING block,因为SqlConnection实现了IDisposable接口.在这种情况下,您不必记住即使抛出异常也必须关闭连接.

请参阅以下示例:

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
            {
                ...
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)