C# 行删除ADO.Net、ASP.Net
我正在尝试使用联系人列表,并希望在键入某人姓名时删除其所有信息。我正在使用一个名为Contact的sql表,其中包含联系人的姓名、电子邮件和地址。我有以下代码:C# 行删除ADO.Net、ASP.Net,c#,asp.net,ado.net,C#,Asp.net,Ado.net,我正在尝试使用联系人列表,并希望在键入某人姓名时删除其所有信息。我正在使用一个名为Contact的sql表,其中包含联系人的姓名、电子邮件和地址。我有以下代码: protected void Delete_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnect"].Conne
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);
}
}
当我使用它时,它似乎在比较列名和我输入的名称。因此,要将名称Bill与列标题名称进行比较,而不是与名称中的名称进行比较。您需要在var(char)类型的值周围使用单引号。如果不使用引号,它会认为引用的是列名而不是值。 它对所有数据库都有效,以下是来自oracle文档: 字符文字用单引号括起来,其中 使Oracle能够将它们与架构对象名称区分开来 实际上,您要做的是使用sqlcommand参数,然后需要在sql语句中使用@[ParameterName]来使用参数名
string delete = "DELETE FROM Contact WHERE Name = @Name";
您的问题似乎是在两个实例中使用了delete变量。第一个用于创建正确的命令,第二个作为参数值,这是错误的。在参数值中,可能必须使用要删除的值t 您的代码有几个严重的问题
string delete = "DELETE FROM Contact WHERE Name = @Name";
protected void Delete_Click(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnect"].ConnectionString))
{
string delete = "DELETE FROM Contact WHERE Name = @Name;"; //no single quotes to worry about
using (SqlCommand cmd = new SqlCommand(delete, con))
{
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = NameToDelete.Text; //just guessed at the VarChar - check your database for type
try
{
con.Open();
cmd.ExecuteNonQuery();
Response.Redirect("ViewContacts.aspx");
}
catch (Exception ex)
{
Response.Write(ex.Message); //ex by itself, will get you nothing but the fully qualified name of Exception
}
}
}
}
如果您添加了参数,这是正确的,请确保您使用它!如果你不打算使用它,有很多代码是没有意义的@AntonioRodriguez你是对的,我意识到这些行之后的参数用法。出于安全原因,首选的方法当然是使用参数(反对sql注入)。好吧,我把它弄得有点乱,我让它使用parameters.AddWithValue(“@nametodelet”,nametodelet.Text);这样看起来干净多了。谢谢