在C#中使用XML字段modify()时如何绑定SqlCommand参数
我在使用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 转义方法?
I'm having trouble escaping SQL for use in a XML field with the modify() function:
example code:
new SqlCommand("UPDATE Table " +
"SET xmlField.modify('insert " + xml_string + " as last into (/element)[1]') " +
"WHERE id = @id", conn, transaction);
@id can be bound in C# by SqlCommand.Parameters.Add(..), but xml_string, being inside the modify method, will not allow parameter binding.
So if I want to protect from SQL injection, what do I do with this xml_string? Is there an SQL Escape method similar to System.Security.SecurityElement.Escape() ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,我终于让它工作了:
然后在参数绑定中,一定要使用 XML 数据类型而不是 Char (!),否则它将无法工作:
O.k. I finally got it to work:
and then in the parameter binding, be sure to use the XML data type and not Char (!), otherwise it won't work: