java.sql.SQLException: таблица 'CONNECTIONS' не имеет автоматически сгенерированного столбца с именем 'connection_id' - PullRequest
1 голос
/ 27 октября 2011

Я пытаюсь получить столбец connection_id при вставке в таблицу соединений. У меня есть таблица, сгенерированная в начале приложения, как это с column_id автоматически генерируется.

CREATE TABLE connections (connection_ID INT not null primary key GENERATED ALWAYS AS IDENTITY(START WITH 1, INCREMENT BY 1), 
connection_name VARCHAR(100) unique not null, user_name VARCHAR(100) not null, password VARCHAR (100) not null, server_url 
VARCHAR(100) not null, port_number VARCHAR(10) not null), 

Я использую следующий оператор, чтобы получить значение connection_ids

PreparedStatement stmt = dbconn.prepareStatement(insertString, new String[] {"connection_id"});

Но я получаю следующее исключение, хотя мой connection_id генерируется автоматически,

java.sql.SQLException: Table 'CONNECTIONS' does not have an auto-generated column named 'connection_id'.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Используйте PreparedStatement.RETURN_GENERATED_KEYS вместо new String[] {"ID_colname"} - см. A_horse_with_no_name ответ на этот вопрос:

Получить идентификатор записи, только что вставленной в базу данных Java DB (Derby)

Например:

PreparedStatement ps = connection.prepareStatement("insert .... ", PreparedStatement.RETURN_GENERATED_KEYS);
ps.executeUpdate();
ResultSet results = ps.getGeneratedKeys();

У меня только что была такая же проблема (8 лет спустя!), И «это работает для меня».

Я не знаю, почему new String[] {"ID_colname"} не работает, но, по крайней мере, есть такая альтернатива, чтобы попробовать.

0 голосов
/ 27 октября 2011

У меня нет большого опыта работы с Java DB, но я надеюсь, что это поможет.Может быть, вам нужно сделать автоматически сгенерированные ключи возвратными.Проверьте Справочное руководство по Java DB и определение класса соединения

...