繁体   English   中英

如何使用Java中的MySQL从字符串文字中删除单引号

[英]How to escape single quote in string literal using MySQL from Java

我有一个包含p_idp_name的MySql表person_details 现在,如果我想插入一个p_name包含单引号' ,我会以这种方式执行它 -

insert into person_details values (1, 'D\\'souza');

现在,我试图通过这种方式通过java代码执行相同的操作 -

insert into person_details values (1, 'D\\\\\\'souza');

我得到MySQLSyntaxErrorException。

哪里不对了?

要直接回答您的问题,请将引号加倍。

insert into person_details values (1, 'D''souza');

但我宁愿使用PreparedStatement对查询进行参数化。

以下是PRO:

  • 避免SQL注入
  • 不需要使用单引号。

例,

String str = "insert into person_details values (?, ?)";
query = con.prepareStatement(str);
query.setInt(1, 1);
query.setString(2, "D'souza");
query.executeUpdate();

在MySQL中,您在字符串中使用''作为单个'

insert into person_details values (1, 'D''souza');

链接到文档

但这仅适用于您按字面提供数据的情况,例如使用您控制的数据预先填充表格的SQL脚本等。如果您从外部源(例如,最终用户)接收该字符串,或者外部系统)然后可能你不会写文字,而是使用字符串变量。 在这种情况下,您希望将预准备语句用作JW。 在他的回答中描述 为什么: http//xkcd.com/327/

你也可以用"

insert into person_details values (1, "D'souza");

为什么不使用PreparedStatements

它还将处理SQL注入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM