你能为sqlconnection和sqldatareader使用2'using'语句吗?

时间:2010-04-12 16:16:13

标签: asp.net ado.net

你可以使用2'使用'语句,如:

using (SqlConnection ..)
{
    using(SqlDataReader reader = new SqlDataReader())
    {

     }

}

我正在尝试这样做,在SqlDataReader

的构造函数上出现错误

3 个答案:

答案 0 :(得分:6)

SqlDataReader没有构造函数。通过调用SqlCommand对象的ExecuteReader方法返回一个datareader。

e.g。

using (SqlConnection ..) 
{ 
    SqlCommand cmd = new SqlCommand(...);
    using(SqlDataReader reader = cmd.ExecuteReader())) 
    { 

    } 

}

答案 1 :(得分:1)

你可以,你也可以格式化它们,而不需要像这样的额外括号:

using (SqlConnection ..)
using(SqlDataReader reader = new SqlDataReader())
{

}

我一直在做限制范围嵌套的数量。

答案 2 :(得分:0)

您无法像上面提到的那样实例化SqlDataReader。一般来说,我看到2个级别的使用块,但内部的是命令对象,如下所示:

 using (var conn = new SqlConnection(...))
 {
    conn.Open();
    using (var cmd = new SqlCommand(...))
    {
       var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    }
 }