Я пытаюсь добавить значение даты в формате yyyy-mm-dd в mysql, используя хранимую процедуру.
Если я вызову хранимую процедуру в mysql, я смогу правильно вставить те же данные.
Однако, когда я пытаюсь вызвать его через java, я получаю сообщение об ошибке:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'medication(1005,51,'2' at line 1
Моя хранимая процедура:
CREATE DEFINER=`xxx`@`localhost` PROCEDURE `insert_eD_dispensed medication`(IN `prescription_mapping_id` int(11), IN `patient_id` int(11), IN `date_of_dispense` date )
NO SQL
INSERT INTO `prescription_dispensation_mapping` (`prescription_mapping_id`, `patient_id`, `date_of_dispense` )
Вызов:
public boolean insert_eD_dispensation (String prescription_mapping_id, String patient_id, String date_of_dispense) {
Connection conn = this.getDBMySQLCon();
String queryString;
PreparedStatement preparedStmt = null;
try {
queryString = " {CALL insert_eD_dispensed medication(?,?,?)}";
preparedStmt = conn.prepareStatement(queryString);
preparedStmt.setInt(1, toInteger(prescription_mapping_id));
preparedStmt.setInt(2, toInteger(patient_id));
preparedStmt.setDate(3, java.sql.Date.valueOf(date_of_dispense));
preparedStmt.execute();
conn.close();
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
Вызов метода java:
String prescription_mapping_id = "1005";
String patient_id = "1";
String date_of_dispense = "2019-06-19";
boolean x = insert_eD_dispensation(prescription_mapping_id, patient_id, date_of_dispense)




Я думаю, что проблема может быть в подписи вашего продукта. Но также проблемы с часовым поясом, вот сообщение для проверки этого. введите сюда описание ссылки
Спасибо davidza5. Действительно, проблема заключалась в подписи моей хранимой процедуры. В его названии есть пробел
insert_eD_dispensed medication. Я переименовал его в insert_eD_dispensed_medication`, и теперь он работает! Спасибо!