Страницы

Поиск по вопросам

среда, 12 июня 2019 г.

Значения по умолчанию при вставке с помощью PreparedStatement

Такой вопрос, есть дао класс с запросом insert последние три поля в базе данных postgresql имеют значение default,то есть как мне объяснили данные postgresql берет автоматически, какие есть способы сделать эти значения в Java?
Пример:
public void addSkisql(Skisql skisql) { try { PreparedStatement preparedStatement = connection .prepareStatement("insert into clippersql.skisql(nzak,osd_t,osd_c,osd_r,kiz,pri,nvp,naim,nizv,\"user\",datez,user_ip) values(?,?,?,?,?,?,?,?,?,?,?,?)"); // Parameters start with 1 preparedStatement.setString(1, skisql.getNzak()); preparedStatement.setString(2, skisql.getOsd_t()); preparedStatement.setString(3, skisql.getOsd_c()); preparedStatement.setString(4, skisql.getOsd_r()); preparedStatement.setString(5, skisql.getKiz()); preparedStatement.setInt(6, skisql.getPri()); preparedStatement.setString(7, skisql.getNvp()); preparedStatement.setString(8, skisql.getNaim()); preparedStatement.setString(9, skisql.getNizv()); preparedStatement.setString(10, skisql.getUser()); Date date = Date.valueOf(skisql.getDatez().toString()); preparedStatement.setDate(11, date); preparedStatement.setString(12, skisql.getUser_ip()); preparedStatement.executeUpdate();


Ответ

В данном случае, если задавать null, то при вставке записи будет использоваться дефолтное значение.
Integer obj = null; PreparedStatement preparedStatement; if (obj == null) { preparedStatement.setNull(1, Types.INTEGER); } else { preparedStatement.setInt(1, obj); }
Если СУБД не поддерживает эту возможность, то можно путем модифицирования запроса (составлять запрос с необходимым количеством параметров) либо добавлять хранимую процедуру.

Комментариев нет:

Отправить комментарий