我有一个带有名称字段的 Web 表单,我希望它能够接受单个撇号,例如名称 O'Leary,但是在尝试将此记录推送到 SQL 2005 服务器时,出现错误。我的问题不是这个。就是当我尝试使用此语句将记录插入数据库时​​...

Dim acctName As String = Replace(txtName.Text, "'", "''")

我在数据库中得到 O''Leary 而不是 O'Leary。认为 SQL 应该将这些双单撇号视为一个撇号???

最佳答案

最好使用参数化查询。这些将自动处理单引号,并更好地保护您免受 SQL 注入(inject)。

插入双单引号(我说的对吗?)是一种转义数据的方式。它应该有效,但这不是最佳实践。

请参阅这篇文章以获得更完整的答案:

http://msdn.microsoft.com/en-us/library/ff648339.aspx

我建议的是第 3 步。

编辑 - 我应该更好地阅读问题

如果您已经在使用参数化查询、 存储过程,并且您将 acctName 的值设置为参数的值,那么您不需要自己转义引号。这是自动处理的。

它也由多种工具处理,包括 Mirosoft 模式和实践数据库库。它有几个命令,您可以在其中传递用作参数值的语句和对象数组 - 也可以处理转义。

如果是其中任何一种情况,您可以完全消除替换值的代码行。

关于asp.net - 替换asp.net中的撇号以防止SQL错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7476445/

10-11 21:39