【发布时间】:2020-05-30 09:36:50
【问题描述】:
我正在尝试在表上运行 insert 或 update - 从下面生成的字符串在复制粘贴到 HeidiSQL 时工作正常,但在运行时抛出 SQLSyntaxErrorExceptions来自Java:
Statement statement = con.createStatement();
String escapedXML = EscapeString(billboard.getXml());
String sql = String.format(
"DELIMITER $ \r\nBEGIN NOT ATOMIC\r\n" +
"IF EXISTS(SELECT * FROM billboards where Name='%s') THEN UPDATE billboards SET XML='%s' where Name='%s';\r\n" +
"ELSE insert into billboards(Name, XML, CreatorName) values('%s', '%s', '%s');\r\n" +
"END IF;\r\n" +
"END $\r\n" +
"DELIMITER ;", billboard.getName(), escapedXML, billboard.getName(), billboard.getName(), escapedXML, billboard.getCreatorName());
// Insert or update billboard
statement.execute(sql);
我不知道为什么。
【问题讨论】:
-
嗨!了解它引发的整个错误对于尝试找出正在发生的事情非常有帮助。你能把它贴在这里吗?
-
当然可以:java.sql.SQLSyntaxErrorException: (conn=113) 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在 'DELIMITER |\r 附近使用的正确语法
-
@ConnorWilson 为什么你的问题有标签
sql-server而不是MariaDB? -
修复了我的错误
-
您好,请查看错误日志,它通常会提示您哪里出了问题。也许
\r不是 SQL 语法的正确分隔符。
标签: java sql sql-update mariadb sql-insert