逃避单引号'在sql参数化查询中

时间:2016-11-09 10:46:10

标签: sql sql-server vb.net

我试图在vb.net中使用sql查询插入数据,如下所示。 name = corp int' l poc = 1

当我尝试插入时,我收到错误("字符串'&#34之后的未闭合引号;)。当我尝试插入只有1个单引号的名称时会发生这种情况。

因此我添加了一个替换函数,用2个单引号替换1个单引号以转义符号。没有错误,但是当我查看我的数据库时,会添加2个单引号而不是1.

任何人都可以告诉我如何使用参数化查询来逃避单引号?谢谢!

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <thead>
    <th>S.No</th>
    <th>Name</th>
  </thead>
  <tbody></tbody>
  <tfoot></tfoot>
</table>

1 个答案:

答案 0 :(得分:5)

作为参数传递的值(即SqlParameter对象)不需要转义。这是因为客户端API使用RPC调用来执行查询,查询本身和参数分别传递。通过RPC调用,实际参数值将通过TDS协议以本机(二进制)格式发送到SQL Server,而不是嵌入在语句中。这减轻了SQL注入问题并提供了其他好处,例如强类型和改进的性能。