День добрый. Вопрос такой. Значит есть таблица клиентов в бд. Нужно сразу после добавление новой записи получить ее id. Код привожу ниже. Метод которым пользуюсь не работает. Добавляет в таблицу запись
public void addNewClient(Client client) {
PreparedStatement preparedStatement = null;
Connection connection = null;
String sql = "INSERT INTO esteamerbase.client (FIO_CLIENT, DATE_BORN, TELEPHONE, SMS, STATUS_CLIENT) " +
"VALUES (?,?,?,?,?)";
try {
connection = getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,client.getFio_client());
preparedStatement.setString(2,client.getDate_born());
preparedStatement.setLong(3,client.getTelephone());
preparedStatement.setBoolean(4, client.getSms());
preparedStatement.setString(5, client.getStatus_client());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
closeConnection(connection);
closePreparedStatement(preparedStatement);
}
}
Получает последний id
public int getLasId(){
int id_user = 0;
String sql = "SELECT LAST_INSERT_ID();";
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try{
connection = getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
while (resultSet.next()){
id_user = resultSet.getInt(1);
}
}catch (SQLException e){
closeConnection(connection);
closeStatement(statement);
}
return id_user;
}
Дело еще в том, что каждый раз я создаю новое подключение а затем его закрываю. Если его не закрывать то тогда все работает. Но мне не нравится то что они будут постоянно открыты.
В корне неверно понимаете как получать сгенерированные id - ваш способ даст сбой если параллельно к БД стучится несколько разных юзеров/коннектов.
Вам надо создавать стейтмент так:
preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
Далее после выполнения опрашивать сгенерированные ключи (их может быть несколько), через:
ResultSet generatedKeys = preparedStatement.getGeneratedKeys()) {
if (generatedKeys.next()) {
//получаем имя и значение сгенерированного ключа из ResultSet
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
есть проблема в выравнивании элементов, на данный момент, есть такое (лишнее в коде убрал, чтобы была видна только необходимая структура),...
Разрабатываю приложение на laravel+vue, и возникло пару вопросов: