Asp.net 在查询中添加撇号

Asp.net 在查询中添加撇号,asp.net,syntax,apostrophe,Asp.net,Syntax,Apostrophe,我有一个查询,它从文本框中获取文本并将其输入数据库 如果值类似于Taylor,则可以正常工作,但如果值是O'Neill,则会出现错误,因为撇号给出了语法错误未闭合引号 有没有办法将O'Neill添加到数据库中,而撇号仍然存在 我不想用一个双引号来代替它,我想把它放在数据库中,就像它显示的那样 谢谢如果您使用双单引号,您的数据库中就不会出现双单引号。您将只得到一个单引号 双引号只是一种在SQL语句中转义单引号的方法。因此,当您执行以下操作时: > insert into your_table

我有一个查询,它从文本框中获取文本并将其输入数据库

如果值类似于
Taylor
,则可以正常工作,但如果值是
O'Neill
,则会出现错误,因为撇号给出了语法错误
未闭合引号

有没有办法将
O'Neill
添加到数据库中,而撇号仍然存在

我不想用一个双引号来代替它,我想把它放在数据库中,就像它显示的那样


谢谢

如果您使用双单引号,您的数据库中就不会出现双单引号。您将只得到一个单引号

双引号只是一种在SQL语句中转义单引号的方法。因此,当您执行以下操作时:

> insert into your_table (name) values ('O''neil');
O'neil
将实际插入数据库中

如果您的数据库是PostgreSQL,则还有其他方法可以操作字符串。例如,使用
$$

> insert into your_table (name) values ($$O'neil$$);

将在数据库中插入
O'neil

如果使用双单引号,则数据库中不会出现双单引号。您将只得到一个单引号

双引号只是一种在SQL语句中转义单引号的方法。因此,当您执行以下操作时:

> insert into your_table (name) values ('O''neil');
O'neil
将实际插入数据库中

如果您的数据库是PostgreSQL,则还有其他方法可以操作字符串。例如,使用
$$

> insert into your_table (name) values ($$O'neil$$);

将在数据库中插入
O'neil

您可以通过将撇号加倍(
'
)来转义撇号-将插入一个撇号

因此,插入
O'Neill
将导致
O'Neill
插入数据库

然而,您需要这样做的事实表明,您正在使用开放的嵌入式SQL


如果您使用,您将不会受到攻击,也不需要使用转义撇号。

您可以通过将撇号加倍(
'
)来转义撇号-将插入一个撇号

因此,插入
O'Neill
将导致
O'Neill
插入数据库

然而,您需要这样做的事实表明,您正在使用开放的嵌入式SQL


如果您使用,您将不会那么容易受到攻击,也不需要使用转义撇号。

您可能需要查看步骤4。在中为SQL查询使用命令参数。这不仅可以解决报价问题,还可以防止SQL注入攻击和其他非常糟糕的事情™避免发生。

您可能需要查看步骤4。在中为SQL查询使用命令参数。这不仅可以解决报价问题,还可以防止SQL注入攻击和其他非常糟糕的事情™避免发生。

您可以使用双精度“”提交SQL查询。很好,数据库可以识别转义字符并只保存一个


为什么不需要双单引号解决方案?

您可以使用双引号提交SQL查询很好,数据库可以识别转义字符并只保存一个


为什么不需要双单引号解决方案?

可以发布用于将数据插入数据库的代码吗?可以发布用于将数据插入数据库的代码吗?他/她在问题中提到了这一点。@Pablo-转义它会将单引号插入数据库。@Pablo-我的观点是,他假设转义将导致插入两个撇号。这个假设是不正确的。他/她在问题中提到过。@Pablo-转义将在DB中插入一个引号。@Pablo-我的观点是,他假设转义将导致插入两个撇号。这个假设是不正确的。使用参数对我来说不是一个真正的选项现在我正在编辑的其他人的工作中的所有当前查询都使用openquery,并且都是在没有参数的情况下完成的。我不想重新编写整页atm,但是+1获取SQL注入的信息使用参数对我来说现在不是一个真正的选项我正在编辑的来自其他人工作的查询使用openquery,并且在没有参数的情况下完成。我不想重新编写整个页面,但需要+1才能获得SQL注入的信息