gpt4 book ai didi

.net - SqlCommand.Parameters.AddWithValue 到底做什么?

转载 作者:行者123 更新时间:2023-12-02 20:47:28 27 4
gpt4 key购买 nike

SqlCommand.Parameters.AddWithValue() 对查询做了哪些更改?

我希望:

  1. 它将每个 ' 字符替换为 ''

  2. 如果参数值是字符串或必须转换为字符串的内容,则会用 ' 包围该值,例如 select * from A where B = @hello 将给出 select * from A where B = 'hello world'

  3. 如果参数值是像整数这样的“安全”值,它将按原样插入查询中,不带引号,因此 select * from A where B = @one 会给出从 A 中选择 *,其中 B = 1

还有其他我不知道的变化吗?

最佳答案

ADO.NET SqlClient 驱动程序将不会进行任何替换!这是一个常见的误解 - 它避免了更换任何东西的麻烦。

它的作用是将带有参数@param1 ... @paramN的查询以及参数名称/值对的集合直接传递到SQL Server。然后,SQL Server 使用 sp_executesql 存储过程执行这些操作。

没有进行任何替换,客户端也没有“将完整的 SQL 语句串在一起”——没有类似的事情。如果这就是 ADO.NET 运行时所做的事情,那么它也很容易受到 SQL 注入(inject)攻击。

关于.net - SqlCommand.Parameters.AddWithValue 到底做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3243194/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com