我正在尝试使用联系人列表,并希望在我输入其姓名时删除该人的所有信息。我正在使用名为联系人的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);
}
}
当我使用它时,似乎是将“名称”列与我要输入的名称进行比较。因此,正在将“名称”比尔与列标题“名称”进行比较,而不是名称中的内容。
答案 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。