变量名称“@VarName”已被声明为问题我正在根据下拉列表中的选择将多个项目插入表中。当我从下拉列表中选择一项时,一切正常,但当我选择多项时,出现此错误变量名称“@CompName”已被声明。变量名称在查询批处理或存储过程中必须是唯一的。我究竟做错了什么?谢谢,这是我的代码protectedsqlcon.Open();字符串CompName=((TextBox)DV_Test.FindControl("txtCompName")).Text.ToString();字符串Num=((TextBox)DV_Test.FindControl("txtNum")).Text.ToString();SqlCommandcmd=newSqlCommand("从MyTable中选择CompNamewhereCompName='"+CompName+"'andNum='"+Num+"'andName='"+Name+"'",sqlcon);SqlDataReaderdr=cmd.执行阅读器();if(dr.Read()){lblmsg.Text="无效";}else{dr.Close();sqlcmd.CommandText="INSERTINTOMyTable(CompName,Num,Name)VALUES(@CompName,@Num,@Name)";sqlcmd.Parameters.Add("@CompName",SqlDbType.VarChar).Value=CompName;sqlcmd.Parameters.Add("@Num",SqlDbType.VarChar).Value=Num;sqlcmd.Connection=sqlcon;sqlcmd.ExecuteNonQuery();DV_Test.ChangeMode(DetailsViewMode.Insert);();}sqlcon.Close();每次通过循环时,您都将参数@CompName和@Num添加到查询中您需要将调用移到循环外并更新它们:sqlcmd.Parameters["@CompName"].Value=公司名;sqlcmd.Parameters["@Num"].Value=Num;所以你的代码变成:sqlcmd.CommandText="INSERTINTOMyTable(CompName,Num,Name)VALUES(@CompName,@Num,@Name)";sqlcmd.Parameters.Add("@CompName",SqlDbType.VarChar);sqlcmd.Parameters.Add("@Num",SqlDbType.VarChar);foreach(ListItemlistItemincblCustomerList.Items){if(....){....}else{dr.Close();sqlcmd.Parameters["@CompName"].Value=CompName;sqlcmd.Parameters["@Num"].Value=Num;sqlcmd.Connection=sqlcon;sqlcmd.ExecuteNonQuery();DV_Test.ChangeMode(DetailsViewMode.Insert);sqlcon.Close();添加sqlcmd.Parameters.Clear();在最后。这样每个参数在每个循环结束时都不存在。示例://...sqlcmd.CommandText="INSERTINTOMyTable(CompName,Num,Name)VALUES(@CompName,@Num,@Name)";sqlcmd.Parameters.Add("@CompName",SqlDbType.VarChar).Value=CompName;sqlcmd.Parameters.Add("@Num",SqlDbType.VarChar).Value=Num;sqlcmd.Connection=sqlcon;sqlcmd.ExecuteNonQuery();DV_Test.ChangeMode(DetailsViewMode.Insert);sqlcon.Close();sqlcmd.Parameters.Clear();//...我的假设是因为您在循环范围之外声明了sqlcmd;所以当你迭代它时,你可能会多次添加相同的参数名称。请修改这一行:SqlCommandcmd=newSqlCommand("selectCompNamefromMyTablewhereCompName='"+CompName+"'andNum='"+Num+"'andName='"+Name+"'",sqlcon);因为这是等待发生的SQL注入。只需添加:SqlCmd.Parameters.Clear();在代码中,在添加参数之前。它将清除添加的参数列表并将您的参数视为新参数。以上为C#学习教程:变量名'@VarName'已声明为该Issue分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
