我试图在执行SQL插入时将标识列返回给我的Java程序。运行代码时出现以下错误
Uncaught exception thrown in one of the service methods of the servlet: Cocoon. Exception thrown : java.lang.AbstractMethodError: java/sql /Connection.prepareStatement(Ljava/lang/String;I)Ljava/sql/PreparedStatement;
这是我正在运行的代码。
private void insertUserInputParameters(ReportData rptData){ UserInputParameters userParams = rptData.getUserInputData(); StringBuilder sql = new StringBuilder(); PreparedStatement pstmt = null; ResultSet rs = null; int userDataId = -1; //Get a database connection. sl = ServiceLocator.getInstance(); ds = sl.getDataSource("jdbc/collegeguide"); con = ds.getConnection(); con.setReadOnly(false); sql.append("insert into cpgusrdtaf (statecd, addr1, addr2, city, state, "); sql.append("zipcode, dependent, shdindic, marstatus, residency, prntatge, "); sql.append("fincome, mincome, pincome, taxspaid, taxreturn, elig1040, "); sql.append("gincome, pcash, inetwrth, bnetwrth, pbenefit, paddlinf, "); sql.append("puntax, pdslcwrk, smstatus, sresidncy, studtr, stud1040, "); sql.append("sadjinc, sincome, spincome, sdslcwrk, studtax, scash, "); sql.append("sinvest, snetwrth, saddlinf, suntax, househld, nmbrsch, "); sql.append("studact, studsat, schools, housing) "); sql.append("values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, "); sql.append("?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); //This line of code is where I get the error** pstmt = con.prepareStatement(sql.toString(), Statement.RETURN_GENERATED_KEYS); //If I remove the 'Statement.RETURN_GENERATED_KEYS' I do not get the error.** pstmt = con.prepareStatement(sql.toString()); setStatementValues(pstmt, userParams); pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if(rs.next()){ userDataId = rs.getInt(1); }
我不允许使用存储过程,所以我不能走那条路。任何帮助将不胜感激
我正在使用Java 1.5
预先感谢道格
我的JT400.jar文件是较旧的版本。我从sourceforge下载了最新的jar文件,问题已解决。