繁体   English   中英

在C#中使用XML字段Modify()时如何绑定SqlCommand参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM