![](/img/trans.png)
[英]How do I conditionally add parameters to a SQLCommand object in C#?
[英]How do I bind SqlCommand Parameters when using XML field modify() in C#
我在使用Modify()函数转义SQL以在XML字段中使用时遇到麻烦:
示例代码:
new SqlCommand("UPDATE Table " +
"SET xmlField.modify('insert " + xml_string + " as last into (/element)[1]') " +
"WHERE id = @id", conn, transaction);
@id可以通过SqlCommand.Parameters.Add(..)绑定到C#中,但是xml_string位于Modify方法中,将不允许参数绑定。
因此,如果我想防止SQL注入,该xml_string怎么办? 是否存在类似于System.Security.SecurityElement.Escape()的SQL Escape方法?
好吧,我终于让它工作了:
new SqlCommand("UPDATE Table " +
"SET xmlField.modify('insert sql:variable(\"@xml_string\") as last into (/element)[1]') " +
"WHERE id = @id", conn, transaction);
然后在参数绑定中,确保使用XML数据类型而不是Char(!),否则将无法使用:
cmd.Parameters.Add("@xml_string", SqlDbType.XML).Value = xml_string;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.