почему executeUpdate возвращает 1, даже если новая строка не была вставлена?
вот моя очень простая таблица (Postgres):
CREATE TABLE IF NOT EXISTS PERFORMANCE.TEST
(
test text NOT NULL UNIQUE
);
если я попытаюсь вставить строку, используя команду ниже базы данных, все будет работать как положено, не удивительно, что в базе данных появится новая строка.
insert into performance.test (test) values ('abbbbaw');
Однако, если я хочу вставить строку через JDBC, ничего не вставляется, хотя prepareStatement.executeUpdate () всегда возвращает 1.
Ниже мой метод, который должен работать, но это не так. Пожалуйста, скажите мне, если я упускаю что-то очевидное. Я хочу добавить, что я никогда не получаю SQLException.
private void storePerformance() {
Connection conn= initializePerformanceConnection();
if (conn!= null) {
PreparedStatement insertPS = null;
try {
insertPS = conn.prepareStatement("insert into performance.test (test) values (?)");
insertPS.setString(1, queryVar);
int i = insertPS.executeUpdate();
LogManager.doLog(LOG, LOGLEVEL.INFO," numberofrows= "+i);
} catch (SQLException e) {
LogManager.doLog(LOG, LOGLEVEL.INFO,"Inserting query failed = "+queryVar,e);
}finally{
if(insertPS != null){
try {
insertPS.close();
} catch (SQLException e) {
LogManager.doLog(LOG, LOGLEVEL.INFO,"Closing Prepa,redStatement failed = "+queryVar,e);
}
}
try {
conn.close();
} catch (SQLException e) {
LogManager.doLog(LOG, LOGLEVEL.INFO,"Closing performanceConnection failed= "+ queryVar, e);
}
}
}
}