使用引号将参数传递给 SQL Server SP
我正在使用 C# 中的 SqlCommand 类在 SQL 服务器上执行存储过程。目前,我只是构建一个执行字符串,将参数值解析到存储过程,然后在服务器上执行该字符串。问题是当我有引号时,字符串无法正确传递
是否可以使用 SqlParameter 对象传递参数而不用担心转义引号?
I am executing a stored procedure on a SQL server using a SqlCommand class from C#. Currently I just build an execution string that parses in the parameter values to the stored procedure then executes the string on the server. The problem is when I have quotes the string does not get passed properly
Is it possible to use SqlParameter objects to pass in the parameters without worrying about escaping out of quotes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,这是发送参数的首选方式。
例子:
Yes, that is the preferred way of sending parameters.
Example:
简而言之,是的 - 并且无论如何您都应该使用 SqlParameter 对象而不是字符串连接,作为防范 SQL 注入攻击的最低限度。
Simply put, yes - and you should be using SqlParameter objects rather than string concatenation anyway, as a minimum to guard against SQL injection attacks.
使用 SqlParameter 时,您可以指定参数的类型和大小。这样做可以确保执行计划的重用(尽管这对于 StoredProcs 来说不是一个问题),但也确保您无需担心转义和引用 - 这一切都为您完成了。
When using SqlParameter you are able to specify the type and size of the parameters. Doing so ensures execution plan re-use (though that's not such an issue with StoredProcs) but also ensure that you do not need to worry about escaping and quoting - it's all done for you.