如何在 C# 中使用 XML 字段 modify() 时绑定 SqlCommand 参数
本文关键字:modify 绑定 参数 SqlCommand 字段 XML | 更新日期: 2023-09-27 17:55:27
我在转义SQL以使用modify()函数在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方法?
ok.我终于让它工作了:
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;