[英]How to escape single quote in string literal using MySQL from Java
我有一个包含p_id
和p_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:
例,
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.