Connection conn = getConncetion();
String sql ="insert into account(account_id,recommender_id,login_name,login_password,status,create_date,pause_date,close_date,real_name,idcard_no,birthdate,gender,telephone) values (account_seq.nextval,?,?,?,'0',sysdate,null,null,?,?,to_date(?,'yyyy-mm-dd'),?,?)";
System.out.println(Statement.RETURN_GENERATED_KEYS);
PreparedStatement stmt = conn.prepareStatement(sql,new String[]{"account_id"});
System.out.println("99999999999999");
Calendar c = Calendar.getInstance();
c.setTime(account.getBirthdate());
String birth = c.get(Calendar.YEAR)+"-"+c.get(Calendar.MONTH)+"-"+c.get(Calendar.DATE);
stmt.setInt(1, account.getRecommenderId());
stmt.setString(2, account.getLoginName());
//stmt.setString(3, birth);
stmt.setString(3, account.getLoginPassword());
stmt.setString(4, account.getRealName());
stmt.setString(5, account.getIdcardNo());
stmt.setString(6, birth);
stmt.setString(7, account.getGender());
stmt.setString(8, account.getTelephone());
stmt.executeUpdate();
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
int id = rs.getInt(1);
account.setAccountId(id);
此時會報錯:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at oracle.jdbc.driver.OracleSql.computeBasicInfo(OracleSql.java:950)
at oracle.jdbc.driver.OracleSql.getSqlKind(OracleSql.java:623)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:1212)
at oracle.jdbc.driver.T4CPreparedStatement.<init>(T4CPreparedStatement.java:28)
at oracle.jdbc.driver.T4CDriverExtension.allocatePreparedStatement(T4CDriverExtension.java:68)
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3059)
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:2961)
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:5940)
at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:482)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:409)
at com.tarena.netctoss.impl.AccountDAOImpl.save(AccountDAOImpl.java:58)
at com.tarena.netctoss.TestAccountDAO.testSave(TestAccountDAO.java:49)
at com.tarena.netctoss.TestAccountDAO.main(TestAccountDAO.java:19)
但是去掉一個占位符后沒有問題
sql陳述句改為 如下后就正常了
String sql ="insert into account(account_id,recommender_id,login_name,login_password,status,create_date,pause_date,close_date,real_name,idcard_no,birthdate,gender) values (account_seq.nextval,?,?,?,'0',sysdate,null,null,?,?,to_date(?,'yyyy-mm-dd'),?)";
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265206.html
標籤:Web 開發
上一篇:LIST 物件去重的問題
下一篇:java中資料用二進制表示
