[英]Exception Error in trying to update database using asp.net
為什么我在嘗試更新數據庫時遇到此錯誤?
ExecuteNonQuery需要一個開放且可用的連接。 連接的當前狀態已關閉
這是代碼:
cmd1 = new SqlCommand("UPDATE [guitarBrands] SET type = @type, name = @name, image = @image WHERE id = @id", con1);
con1.Open();
cmd1.Parameters.Add(new SqlParameter("type", newType.Text));
cmd1.Parameters.Add(new SqlParameter("name", newName.Text));
cmd1.Parameters.Add(new SqlParameter("image", newImage.Text));
cmd1.Parameters.Add(new SqlParameter("id", id));
cmd1.ExecuteNonQuery();
con1.Close();
cmd1.Parameters.Clear();
cmd = new SqlCommand("UPDATE [guitarItems] SET brand = @brand WHERE id = @id", con1);
con.Open();
cmd.Parameters.Add(new SqlParameter("brand", newName.Text));
cmd.Parameters.Add(new SqlParameter("id", id));
cmd.ExecuteNonQuery();
con.Close();
cmd.Parameters.Clear();
為避免出現這類問題,建議您使用電源塔 。
using(var connection = new SqlConnection(dbConnection))
{
connection.Open();
using(var command = new SqlCommand(query, connection)
{
}
using(var command = new SqlCommand(query, connection)
{
}
}
所以權力塔的美麗,使用塊將在給定的代碼塊內實現。 因此,這將清楚地表明,這兩個命令都使用了與使用相同的連接。 此外,一旦代碼超出范圍,它將實現IDispose
,它將調用垃圾收集器來釋放資源。
另外,你應該選擇。 SqlCommand
接受參數數組。 因此,如果您使用方法調用,您可以簡單地執行:
public static GetExample(string query, params SqlParameter[] parameters)
{
using(var connection = new SqlConnection("YourDbConnection"))
using(var command = new SqlCommand("YourQuery", connection))
{
connection.Open();
if(parameters != null)
if(parameters.Any())
command.Parameters.Add(parameters);
command.ExecuteNonQuery();
}
}
我不記得該集合是添加,添加范圍還是連續。 但無論哪種方式存在選擇。
cmd = new SqlCommand("UPDATE [guitarItems] SET brand = @brand WHERE id = @id", con1);
將此行替換為此
cmd = new SqlCommand("UPDATE [guitarItems] SET brand = @brand WHERE id = @id", con);
在您的代碼中,您在命令“cmd1”和“cmd”中使用Connexion“con1”。 對兩個命令只使用一個連接是可以的,但是你應該將連接打開,直到兩個命令都被執行。 在您的情況下,您選擇為第二個命令使用新的連接“con”,但是您重新打開“con1”。 所以你得到一個錯誤,因為永遠不會打開“con”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.