正确使用 SqlDataReader

Proper use of SqlDataReader

我看过 2 个例子 SqlDataReader

第一个有一个 using 管理连接的处理和使用的内存,第二个有更少的代码。

更喜欢哪一个?

using (SqlConnection myConnection = new SqlConnection(ConnectionString))
{
    myConnection.Open();
    using (SqlCommand cmd = new SqlCommand("SELECT Name FROM User;", myConnection))
    {
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                DoStuff((string)reader["Name"]); 
            }
        }
    }
}

第二个:

using (SqlConnection mConnection = new SqlConnection(ConnectionString))
{
    mConnection.Open();
    using (SqlCommand cmd = new SqlCommand("SELECT Name FROM User;", mConnection))
    {
        for (SqlDataReader reader = cmd.ExecuteReader(); reader.Read(); )
        {
            DoStuff((string)reader["Name"]);
        }
    }
}

the second has less code.

不是真的。

Which one is to prefer?

到目前为止,第一个。但只是出于审美原因。

在第二个示例中,Reader 将在其(拥有的)连接被处置时关闭,但最好在代码中明确地这样做。

第一个是good.The不需要的资源将通过显式调用自动处理