我正在開發一個連接到Oracle 11g數據庫的應用程序,使用ojdbc6作爲JDBC驅動程序。我爲需要添加值的表創建了一個觸發器和一個序列,以便該表的ID列自動增量。當我使用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, ?, ?, ?, ?, ?)";
但這也未能
有人能幫助我解決這個問題?
謝謝!它現在有效! –