2013-06-05 2 views
2

У меня возникли трудности с удалением строки из базы данных SQL, я не получаю никаких ошибок и, похоже, работает нормально, но ничего не удаляется. Когда я запустил код, он выведет «NAME был удален»Удаление строки из таблицы кажется сбой

Спасибо за любую помощь.

SqlConnection conn = new SqlConnection(); 
conn.ConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\MyDB.mdf;Integrated Security=True"; 

try 
{ 
    conn.Open(); 
    SqlCommand Command = conn.CreateCommand(); 
    Command.CommandText = "DELETE FROM Contacts WHERE [First Name] = '@Name';"; 
    Command.Parameters.AddWithValue("@Name", DropDownList1.SelectedValue); 
    Command.ExecuteNonQuery(); 
    TextBox1.Text = DropDownList1.SelectedValue + " Has Been Deleted"; 
} 
catch (Exception ex) 
{ 
    TextBox1.Text = "Nope"; 
} 
finally 
{ 
    conn.Close(); 
} 
+0

ExecuteNonQuery возвращает число, указывающее, сколько строк были удалены, так что вы не получите исключение, если нет. – Andrew

+0

Pls удаляет '' цитаты вокруг '@ Name' и повторите попытку – Amitd

+0

Вам не нужны котировки вокруг' @ Name' в вашем запросе – valverij

ответ

4

Удалите кавычки вокруг параметра. Также удалите @ -sign из параметра, где вы добавите его в команду.

Command.CommandText = "DELETE FROM Contacts WHERE [First Name] = @Name;"; 
Command.Parameters.AddWithValue("Name", DropDownList1.SelectedValue); 
+2

Из моего опыта, [@ sign] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue%28v = vs.90% 29.aspx). – valverij

2

Ваши критерии скорее всего не выполняются. (Котировки вокруг параметра) Таким образом, никакие записи не удаляются.

Command.ExecuteNonQuery(); 

возвращает int записи записи. Поэтому вы можете проверить это на ноль, чтобы убедиться, что он был удален.

4

Вам не нужны одиночные кавычки с параметризованным запросом.

1

Несколько вещей, которые подробно описаны ниже

SqlConnection conn = new SqlConnection(); 
conn.ConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\MyDB.mdf;Integrated Security=True"; 

try 
{ 
    conn.Open(); 
    SqlCommand Command = conn.CreateCommand(); 
    Command.CommandText = "DELETE FROM Contacts WHERE [First Name] = Name;"; // You don't need the '' or the '@' in your parameter name. 
    Command.Parameters.AddWithValue("@Name", comboBox1.SelectedValue); 
    if (Command.ExecuteNonQuery() > 0) // Add a conditional here that checks for > 0 and THEN set your validation text. 
     textBox1.Text = comboBox1.SelectedValue + " Has Been Deleted"; 
} 

catch (Exception ex) 
{ 
    textBox1.Text = "Nope"; 
} 

finally 
{ 
    conn.Close(); 
} 
Смежные вопросы