Я разрабатываю приложение, которое подключается к базе данных Oracle 11g, используя ojdbc6 в качестве драйвера JDBC. Я создал триггер и последовательность для таблицы, где мне нужно добавить значение, так что столбец идентификатора этой таблицы автоматически создается. Все отлично работает, когда я добавляю новую строку вручную в базу данных с помощью SQL Developper (моя последовательность и триггер для автоинкремента работают хорошо). Но когда речь идет о добавлении новых строк из моего приложения Java, я получаю следующее сообщение об ошибке:Автоинкремент в oracle11g и JDBC
java.sql.SQLRecoverableException: Внутренняя ошибка на oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers (OraclePre paredStatement.java : 3071) на oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow (Или aclePreparedStatement.java:2247) в oracle.jdbc.driver.OraclePreparedStatement.executeInternal (OraclePrep aredStatement.java:3444) в oracle.jdbc.driver .OraclePreparedStatement.executeUpdate (OraclePrepar edStatement.java:3530) в oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate (Oracl ePreparedStatementWrapper.java:1350)
Это мой Java-код:
String query = "INSERT INTO USER (ID, USERNAME, PASSWORD, FIRSTNAME, LASTNAME, EMAIL) VALUES (?, ?, ?, ?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(2, user.getUsername());
preparedStatement.setString(3, user.getPassword());
preparedStatement.setString(4, user.getFirstName());
preparedStatement.setString(5, user.getFirstName());
preparedStatement.setString(6, user.getEmail());
preparedStatement.executeUpdate();
Я не добавлял код для моей последовательности и потому что я не думаю, что проблема возникла из базы данных, так как все отлично работает с sqldevelopper. Я также попытался использовать свою последовательность непосредственно, как:
String query = "INSERT INTO USER (ID, USERNAME, PASSWORD, FIRSTNAME, LASTNAME, EMAIL) VALUES (SEQUENCE.NEXTVAL, ?, ?, ?, ?, ?)";
Но это также не
Может кто-то помочь мне исправить это?
Спасибо! Он работает сейчас! –