C# 从表中删除行似乎失败

C# 从表中删除行似乎失败,c#,sql,C#,Sql,我很难从SQL数据库中删除一行,我没有收到任何错误,它似乎工作正常,但没有删除任何内容。当我运行代码时,它将输出“名称已被删除” 谢谢你的帮助 SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\MyDB.mdf;Integrated Security=True"; try { c

我很难从SQL数据库中删除一行,我没有收到任何错误,它似乎工作正常,但没有删除任何内容。当我运行代码时,它将输出“名称已被删除”

谢谢你的帮助

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();
} 

您的标准很可能未达到。(参数周围加引号)因此不会删除任何记录

Command.ExecuteNonQuery();

返回记录计数的整数。因此,您可以将其与零进行比较,以确保它已被删除。

删除参数周围的引号。同时从参数中删除@-符号,将其添加到命令中

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

您不需要带参数化查询的单引号。

下面详细介绍了几点:

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();
} 

ExecuteOnQuery返回一个数字,指示删除了多少行,因此如果没有,则不会出现异常。请删除
@Name
周围的“”引号,然后再试一次在查询中不需要
@Name
周围的引号。您如何知道“什么都没有发生”?如果您尝试选择记录,该怎么办?通过这种方式,您可以验证reccord是否存在,然后根据我的经验继续搜索,结果很好。