tarafından kapatılmıştır. ExecuteNonQuery açık ve kullanılabilir bir Bağlantı gerektirir. Bağlantının mevcut durumu kapalı.ExecuteNonQuery açık ve kullanılabilir bir Bağlantı gerektirir. Bağlantının mevcut durumu
Burada yanlış olan ne yapıyorum? Bağlantıyı tekrar kullanabileceğini mi varsayıyorum?
Yardımlarınız için teşekkürler!
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 - ";
}
Using() deyiminin komutları SqlCommand'ı elden çıkardığında bağlantıyı da kapatır mı? – Tommy
@Tommy, farkında olduğum kadarıyla değil - SqlCommand.Dispose dokümantasyonu bunu açıklamıyor, bu yüzden varsaymam (http://msdn.microsoft.com/en-us/library/system .data.sqlclient.sqlcommand.dispose.aspx) – Rob
Bağlantı tanımı Bağlantı bloğuna sarılırsa iyi bir çağrı olur. http://stackoverflow.com/questions/410222/does-connection-close-when-command-is-disposed-and-the-connection-is-defined-dire – Tommy