我正在尝试使用以下查询查询数据库。当我在mysql服务器中运行查询时,它工作正常。但是当我在scala中运行相同的查询时,它会抛出错误。
我想在db中获得一行,其cid_status是"未保留"并且cid_curprocess是' process1'并将相同的cid_status更新为" reserved"并返回该行的cid_issueid
以下是查询。
val query =" SET @LastUpdateID:= 0; UPDATE table_details INNER JOIN (SELECT cid_issueid FROM cen_issue_details WHERE cid_curprocess ='过程1' AND cid_status ='未保留'限制1)AS final ON cen_issue_details.cid_issueid = final.cid_issueid SET cen_issue_details.cid_status ='保留',cen_issue_details.cid_issueid =(SELECT @LastUpdateID:= cen_issue_details.cid_issueid); SELECT @LastUpdateID AS LastUpdateID;
val rs = statement.executeUpdate(query)
我收到以下错误:
线程中的异常" main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在&JOD; UPDATE table_details INNER JOIN附近使用正确的语法(SELECT cid_issueid FROM cen_issue_details W' at line 1
此外,我不确定是否使用executeUpdate或executeQuery,因为查询同时执行SELECT和UPDATE。
答案 0 :(得分:1)
Statement.executeupdate(String)
只接受一个声明,但您提供了两个。
请参阅https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String)
上的文档此问题讨论了使用JDBC在单个往返中执行多个语句的选项:Two different prepared statements in one single batch