Мне нужно сохранить некоторые значения в моей таблице с помощью подготовленных операторов.Вставка в базу данных с автоматическим приращением
У меня есть столбец в моей таблице с именем id, и он настроен на автоматическое увеличение. Мне не нужны какие-либо данные от пользователя для этого столбца.
Другие значения получены от пользователя.
Редактировать: Есть 2 ID. Один из пользователей и один, который автоматически создается из базы данных. Первым ключом является автоматически создаваемый базой данных.
Я делаю это правильно?
Спасибо.
Подготовленные Заявление:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_details`(IN id varchar(45),IN username varchar(45),IN name varchar(45))
BEGIN insert into details (id,username,name) values (id ,username,name);
END
Код:
PreparedStatement preparedStatement = connect.prepareStatement("CALL INSERT_DETAILS(?,?,?)");
preparedStatement.setLong(1, userID);
preparedStatement.setString(2, username);
preparedStatement.setString(3, name);
preparedStatement .executeUpdate();
Есть ли причина для использования хранимой процедуры здесь? Не могли бы вы просто сделать connect.prepareStatement («INSERT INTO details (id, username, name) VALUES (?,?,?)»); Вместо этого? –
Да, я могу, но не хранятся процедуры более безопасными? – user3702643
Не совсем. В этом случае безопасность обеспечивается с помощью подготовленных инструкций для дезинфекции входных данных и предотвращения инъекционных атак. Хранимые процедуры обычно зарезервированы для консолидации логики, которую могут использовать несколько клиентов. –