我有一个带有名称字段的 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/