【发布时间】:2012-03-22 02:40:11
【问题描述】:
我有一个插入 sql 语句,它使用 SqlCommand 功能来防止 sql 注入,但它给出了错误:无法绑定多部分标识符“System.Web.UI.HtmlControls.HtmlInputText”。我使用相同的 SqlCommand 功能来更新同一个表而没有问题,但是,下面这个简单的插入给出了错误。任何人都可以帮忙吗?
sSql = "INSERT INTO [camss].[dbo].[tb_ds0402req] ( [ds0402_key] ,[lname] ) " +
"VALUES (" + Session["DS0402Key"] + "," + @VisitorLName + ");";
try
{
using (SqlCommand cmd = new SqlCommand(sSql, conn))
{
cmd.Parameters.AddWithValue("@VisitorLName", VisitorLName.Value);
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
//error handling code
}
【问题讨论】:
-
sSql的构建方式似乎易受 SQL 注入攻击。您是否考虑过 Bobby Tables 可能是您的用户之一? -
除非您将每个变量值放入一个参数中,否则准备好的语句并没有多大帮助。例如,在这种情况下,您会说
VALUES(@DS0402Key, @VisitorLName),然后像使用@VisitorLName一样将参数@DS0402Key添加到命令中。
标签: c# asp.net sql-server sqlcommand