ExecuteNonQuery需要一個開放且可用的Connection。連接的當前狀態已關閉。ExecuteNonQuery需要一個開放且可用的Connection。連接的當前狀態已關閉
我在這裏做錯了什麼?我假設你可以重用連接?
感謝您的幫助!
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString()))
{
cn.Open();
// If we are reverting to an old type
if (pageAction == "revert")
{
debug.Text = "FLAG 1";
// Get the revert ID
int revertingID = int.Parse(Request.QueryString["revID"]);
bool rowsReturned = false;
debug.Text = "FLAG 2 - " + revertingID.ToString();
// Set all to 0
using (SqlCommand cmd = new SqlCommand("SELECT ID FROM tblSiteSettings WHERE ID = " + revertingID, cn))
{
// If it exists
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr.Read())
{
rowsReturned = true;
}
rdr.Close();
}
debug.Text = "FLAG 3 - " + rowsReturned.ToString();
// Set new active and reset others
if (rowsReturned == true)
{
using (SqlCommand cmd = new SqlCommand("UPDATE tblSiteSettings SET isActive = 1 WHERE ID = " + revertingID, cn))
{
cmd.ExecuteNonQuery();
}
using (SqlCommand cmd = new SqlCommand("UPDATE tblSiteSettings SET isActive = 0 WHERE ID <> " + revertingID, cn))
{
cmd.ExecuteNonQuery();
}
}
//debug.Text = "FLAG 4 - ";
}
使用()語句時,它的命令是否在關閉連接時被封裝,以及它是否處置SqlCommand? – Tommy 2010-08-23 13:52:59
@Tommy,不是我所知 - SqlCommand.Dispose的文檔沒有調用它,所以我會假設不是(http://msdn.microsoft.com/zh-cn/library/system .data.sqlclient.sqlcommand.dispose.aspx) – Rob 2010-08-23 13:58:50
好的調用,如果連接定義被封裝在Using塊中,那麼它會。 http://stackoverflow.com/questions/410222/does-connection-close-when-command-is-disposed-and-the-connection-is-defined-dire – Tommy 2010-08-23 14:06:19