行删除ADO.Net,ASP.Net

时间:2019-03-10 21:00:38

标签: c# asp.net ado.net

我正在尝试使用联系人列表,并希望在我输入其姓名时删除该人的所有信息。我正在使用名为联系人的sql表,其中包含联系人的姓名,电子邮件和地址。我有以下代码:

    protected void Delete_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnect"].ConnectionString);
        con.Open();
        string delete = "DELETE FROM Contact WHERE Name =" + NameToDelete.Text;
        SqlCommand cmd = new SqlCommand(delete, con);



        try
        {
            cmd.Parameters.AddWithValue("@Name", delete);
            cmd.ExecuteNonQuery();
            Response.Redirect("ViewContacts.aspx");
        }
        catch(Exception ex)
        {
            Response.Write(ex);
        }


    }

当我使用它时,似乎是将“名称”列与我要输入的名称进行比较。因此,正在将“名称”比尔与列标题“名称”进行比较,而不是名称中的内容。

2 个答案:

答案 0 :(得分:0)

您需要在var(char)类型的值周围使用单引号。如果不使用引号,它将认为您是在引用列名而不是值。 它对所有数据库均有效,以下来自oracle docs:

  

字符文字用单引号引起来,   使Oracle能够将它们与模式对象名称区分开。

https://docs.oracle.com/cd/A87860_01/doc/server.817/a85397/sql_elem.htm

string delete = "DELETE FROM Contact WHERE Name ='" + NameToDelete.Text + "'";

实际上,您要尝试使用sqlcommand参数,然后需要在sql语句中使用@ [ParameterName]使用参数名称。

string delete = "DELETE FROM Contact WHERE Name = @Name";

答案 1 :(得分:0)

似乎您的问题是您在两个实例中使用了变量delete。首先创建正确的命令,然后创建第二个参数值,这是错误的。在参数值中,您可能必须使用要删除的值t。