2010-04-12 53 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); 
    } 
} 
相關問題