Значения по умолчанию JDBC PreparedStatement при вставке (UCanAccess)

Мне было интересно, как я могу получить значения по умолчанию для вновь вставленных строк MS Access через UCanAccess.

Таблица: my_tbl

Column   Type
-------+-----------------------
ID     | PrimaryKey, AutoNumber
Label  | Text
DT     | Date/Time, Default: Now()

Код

PreparedStatement st = conn.prepareStatement("INSERT INTO my_tbl (Label) VALUES (?)", Statement.RETURN_GENERATED_KEYS);
st.setString(1, "my new label");

int insertResult = st.executeUpdate();
if(insertResult > 0) {
    ResultSet rs = st.getGeneratedKeys();
    rs.next();
    System.out.println("ID: " + rs.getInt(1));
}

//How do I get the generated value of DT

Ограничения

Я не могу использовать ключевое слово DEFAULT, потому что UCanAccess выдает SQLException (обсуждение SO о ПО УМОЛЧАНИЮ):

Caused by: org.hsqldb.HsqlException: DEFAULT keyword cannot be used as column has no DEFAULT

У вас есть другое решение для меня?


person Markus    schedule 05.07.2017    source источник


Ответы (1)


Как мне получить сгенерированное значение DT

Вам нужно будет использовать значение, возвращаемое rs.getInt(1), для выполнения другого запроса SELECT в форме

SELECT DT FROM my_tbl WHERE ID = ?

а затем получить значение из ResultSet, созданного путем вызова executeQuery для этого запроса.

person Gord Thompson    schedule 05.07.2017