gpt4 book ai didi

java - 不接受转义字符的转义(Java 和 MySQL)

转载 作者:太空宇宙 更新时间:2023-11-03 10:36:34 26 4
gpt4 key购买 nike

我有一个 MySQL 5.5.58-0+deb8u1 的声明,看起来像这样:

UPDATE `general` SET `CUSTOMER_NUMBER` = 'null', `MAINTENANCE_CONTRACT_NR` = '5678', `CONTACT1_NAME` =  + 'ss\' where `general`.`uuid` = '06f8417b-c865-11e7-9a86-000c2924bf92'

我尝试使用\(在 ss 之后)转义

string statementEsc = statement.replace('\\', '\\\\');

这导致:

UPDATE `general` SET `CUSTOMER_NUMBER` = 'null', `MAINTENANCE_CONTRACT_NR` = '5678', `CONTACT1_NAME` =  + 'ss\\' where `general`.`uuid` = '06f8417b-c865-11e7-9a86-000c2924bf92'

当手动尝试查询时,MySQL接受了这个查询,但是程序报错了

已注册 MySQL JDBC 驱动程序executeUpdate 操作时出现问题:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本对应的手册,了解在 'ss\', `...at line 1 附近使用的正确语法SQL UPDATE 操作失败:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 'ss\', ... = '' 附近使用的正确语法。

我不明白为什么。

最佳答案

你在那里有一个流氓加号。

`CONTACT1_NAME` =  + 'ss\'

因此此 SQL 无效:

UPDATE `general` SET `CUSTOMER_NUMBER` = 'null', `MAINTENANCE_CONTRACT_NR` = '5678', `CONTACT1_NAME` =  + 'ss\\' where `general`.`uuid` = '06f8417b-c865-11e7-9a86-000c2924bf92'

建议您在原来的 String 中去掉它,这样您就可以使用以下 SQL 来代替它:

UPDATE `general` SET `CUSTOMER_NUMBER` = 'null', `MAINTENANCE_CONTRACT_NR` = '5678', `CONTACT1_NAME` =  'ss\\' where `general`.`uuid` = '06f8417b-c865-11e7-9a86-000c2924bf92'

另一个建议是看看Prepared Statements .我认为它们会让您的生活更轻松。

关于java - 不接受转义字符的转义(Java 和 MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47328310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com