删除命令C#+ SQL Server

-2 c# database sql-server c#-4.0

我正在执行一个命令来擦除DataGridView中的数据但我无法使其工作,我只想选择一行并将其擦除

除了编写一个显示"删除"的按钮,这样当你点击它时,DataGridView中的选定数据将被删除

我真的需要帮助我迷失了

我的表是"人"我的专栏是"ID"

实例

    {SqlConnection cn;
    SqlCommand cmd;
    SqlDataReader dr;
    SqlDataAdapter da;
    DataTable dt;}

    public string Del(int ID)
    {
        string ouk = "Delete Work";
        try
        {
            cmd = new SqlCommand("Delete From Person Where = ID )", cn);
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            ouk = "Bad character:" + ex.ToString();
        }

        return ouk;
    }
Run Code Online (Sandbox Code Playgroud)

对于DataGridView上的按钮擦除

    private void buttondel_Click(object sender, EventArgs e)
    {

        MessageBox.Show(c.Del(TBID));
    }
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 6

问题是您的SQL查询格式错误,并且您没有将ID传递给查询:

"Delete From Person Where = ID )"
Run Code Online (Sandbox Code Playgroud)

缺少等式检查的一侧,并且您有一个意外的结束括号.

您应该更改查询以接受参数:

"Delete From Person Where ID = @id"
Run Code Online (Sandbox Code Playgroud)

然后将参数传递给您的命令:

cmd.Parameters.Add("@id", SqlDbType.Int).Value = ID;
Run Code Online (Sandbox Code Playgroud)

所以它变成:

try
{
    using (cmd = new SqlCommand("Delete From Person Where ID = @id", cn))
    {
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = ID;
        cmd.ExecuteNonQuery();
    }
}
catch (Exception ex)
{
    ouk = "Bad character:" + ex.ToString();
}
Run Code Online (Sandbox Code Playgroud)

我已经冒昧地将SqlCommand包装在一个using语句中,以便在我们完成它之后将其处理掉.