有什么变化SqlCommand.Parameters.AddWithValue()
与查询有关吗?
我期望:
它取代了每一个'
字符由''
,
如果参数值是字符串或必须转换为字符串的内容,则它将将该值括起来'
,例如select * from A where B = @hello
会给select * from A where B = 'hello world'
.
如果参数值是像整数这样的“安全”值,它将按原样插入查询中,不带引号,因此select * from A where B = @one
会给select * from A where B = 1
.
还有其他我不知道的变化吗?
ADO.NET SqlClient 驱动程序将not做任何替换!这是一个常见的误解——它避免了更换任何东西的麻烦。
它的作用是通过参数传递您的查询@param1 ... @paramN
直接连接到 SQL Server,以及参数名称/值对的集合。 SQL Server 然后使用以下命令执行这些操作:sp_executesql
存储过程
没有进行任何替换,客户端也没有“将完整的 SQL 语句串在一起”——没有类似的事情。如果这就是 ADO.NET 运行时所做的事情,那么它也很容易受到 SQL 注入攻击。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)