2010-04-12 57 views
0

你可以使用2“使用”之类的语句:你可以对sqlconnection和sqldatareader使用2个'using'语句吗?

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

    } 

} 

我试图做到这一点摆上SqlDataReader中

+0

什么是错误?这应该很好。 – 2010-04-12 16:17:10

+1

不要'认为SqlDataReader有一个构造函数...因此你不能使用新的 – deostroll 2010-04-12 16:21:18

+0

是啊,构造函数是问题,谢谢! – Blankman 2010-04-12 16:38:12

回答

6

SqlDataReader没有构造函数。通过调用SqlCommand对象的ExecuteReader方法返回数据读取器。

例如

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

    } 

} 
+0

仅供参考:SqlCommand是IDisposable,也应该在using语句中。 – dkackman 2010-04-12 17:03:12

1

构造得到一个错误,你可以,你也可以格式化他们没有额外的括号如下:

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

} 

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

+0

哇,我不知道可以避免的{}。方便。 。 。 – 2010-04-12 16:20:41

+0

这仍然是错误的,仍然会抛出同样的错误。 – cjk 2010-04-12 16:20:44

+0

无论您的错误是什么,使用两条使用语句都是无法实现的。 – dkackman 2010-04-12 17:01:09

0

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

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