不,處置SqlCommand
不會影響連接。更好的方法是還包裹SqlConnection
在使用塊,以及:
using (SqlConnection conn = new SqlConnection(connstring))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(cmdstring, conn))
{
cmd.ExecuteNonQuery();
}
}
否則,連接是不變的事實,即使用它配置(也許這就是你想要什麼命令? )。但請記住,連接應該被丟棄,並且可能比處理命令更重要。
編輯:
我只是測試這樣的:當使用塊退出
SqlConnection conn = new SqlConnection(connstring);
conn.Open();
using (SqlCommand cmd = new SqlCommand("select field from table where fieldid = 1", conn))
{
Console.WriteLine(cmd.ExecuteScalar().ToString());
}
using (SqlCommand cmd = new SqlCommand("select field from table where fieldid = 2", conn))
{
Console.WriteLine(cmd.ExecuteScalar().ToString());
}
conn.Dispose();
第一命令被設置。連接仍然開放,對第二條命令有好處。
所以,配置命令絕對不會處理它使用的連接。
處理完SqlCommand com之後,它的Connection實例將被解除連接(不被任何東西使用)。所以一旦GarbageCollector完成了SqlConnection實例,連接是不會被丟棄的?我認爲它會是,因爲連接在這裏僅由cmd引用。 – mecek 2013-10-22 21:41:09
那麼在那種情況下,@Mecek,內存將被釋放更難,因爲它會通過終止,這將促使它從gen0到gen1,我猜。 – 2013-10-23 13:32:50