在asp.net中替换撇号以防止SQL错误

Jim*_*Jim 4 sql asp.net apostrophe

我有一个网络的形式,我希望能够接受单引号,如在名字奥利一个名称字段,而是试图这个纪录推到SQL 2005服务器时,我得到一个错误.我的问题不是这个.当我尝试使用此语句将记录插入数据库时​​...

Dim acctName As String = Replace(txtName.Text, "'", "''")
Run Code Online (Sandbox Code Playgroud)

我在数据库中获得O''Leary而不是O'Leary.思想SQL应该把这些双单撇号视为一个撇号???

Dav*_*vid 5

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

插入双单引号(我说对了吗?)是一种逃避数据的方法.它应该工作,但它不是最佳实践.

请参阅此文章以获得更全面的答案:

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

我建议的是第3步.

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

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

它还由几个工具处理,包括Mirosoft模式和实践数据库库.这有几个命令,你可以传入一个语句和用作参数值的对象数组 - 也可以处理转义.

如果是这种情况之一,您可以完全消除替换值的代码行.