«установить» является reserve word in Mysql так что может быть проблема ваших неприятностей. Общий совет заключается в том, чтобы избежать резервных слов и значимо назвать ваши процедуры (например, setAccountRecrod).
Когда мне удалось создать процедуру с этим именем я должен назвать его сбежавшим именем (с задним клещом):
stmt.executeQuery("call `set`("+id+",'"+name+"','"+sal+"','"+dept+"')");
но предположила, что это лучше использовать prepareCall
так:
callableStatement = dbConnection.prepareCall("call `set`(" + id + ",'" +
name + "','" + sal + "','" + dept + "')");
callableStatement.executeUpdate();
или даже лучше:
callableStatement = dbConnection.prepareCall("call `set`(?,?,?,?)");
callableStatement.setInt(1, id);
callableStatement.setString(2, name);
callableStatement.setString(3, sal);
callableStatement.setString(4, dept);
callableStatement.executeUpdate();
Все выше работал для меня в последней версии MariaDb, когда я создаю такую процедуру:
DELIMITER $$
DROP PROCEDURE IF EXISTS `set`;
CREATE PROCEDURE `set` (IN id INT, name VARCHAR(25), sal VARCHAR(25), dept VARCHAR(25))
BEGIN
SELECT VERSION();
END $$
DELIMITER ;
Это должно быть '{call ....}'. См. Учебник JDBC для получения дополнительной информации: http://docs.oracle.com/javase/tutorial/jdbc/basics/storedprocedures.html –