在查询中使用SQL变量时出现java.sql.SQLSyntaxErrorException

时间:2017-04-12 07:38:09

标签: java sql jdbc mariadb heidisql

这是我的SQL查询:

INSERT INTO SomeTable (UniqueID, SomeData, SomeNumber)
VALUES (@unique_id + 1, 'some value', '4234435435')
ON DUPLICATE KEY UPDATE
OtherNum = OtherNum + 1, SomeNumber = '999';
SELECT @unique_id := MAX(UniqueID) FROM SomeTable;

我使用MariaDB。我使用HeidiSQL来管理数据库,执行查询等。在HeidiSQL中,我的查询工作正常,但是当我尝试用Java执行它时,我得到了SQLSyntaxErrorException。我是这样做的:

Connection connection = DriverManager.getConnection("jdbc:mariadb://localhost:3306/somedb?user=root&password=password");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("INSERT INTO SomeTable (UniqueID, SomeData, SomeNumber)\n"
           + "VALUES (@unique_id + 1, 'some value', '4234435435')\n"
           + "ON DUPLICATE KEY UPDATE\n"
           + "OtherNum = OtherNum + 1, SomeNumber = '999';\n"
           + "SELECT @unique_id := MAX(UniqueID) FROM SomeTable;");

在异常信息中,我看到它是由" SELECT @unique_id:= MAX(UniqueID)FROM SomeTable引起的;"线。以下是完整的异常信息:

  

线程中的异常" main" java.sql.SQLSyntaxErrorException :( conn:29)您的SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在SELECT Sometable' SELECT @unique_id:= MAX(UniqueID)FROM SomeTable'在第4行

为什么会发生这种情况以及如何使其发挥作用?

0 个答案:

没有答案