У меня следующий код в Java
qry="insert into usr_auth(usrid,username,password,email) values(?,?,?,?)";
ps=con.prepareStatement(qry);
ps.setString(1,getUniqueID());
ps.setString(2,newUp.getUsrName());
ps.setString(3,newUp.getPwd());
ps.setString(4,newUp.getEmail());
ps.executeUpdate();
этот код дает мне IndexOutOfBoundsException
как:
Исключение базы данных получено
Приносим извинения за неудобства
Сведения об исключении: com.microsoft.sqlserver.jdbc.SQLServerException:
Индекс 2 находится вне диапазона. Подробности:
Индекс 2 находится вне диапазона.
Трассировка стека:
com.microsoft.sqlserver.jdbc.SQLServerException: у индекса 2 нет
спектр. в
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError (SQLServerException.java:171)
в
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam (SQLServerPreparedStatement.java:700)
в
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setValue (SQLServerPreparedStatement.java:709)
в
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setString (SQLServerPreparedStatement.java:1034)
в DBOps.addUser (DBOps.java:55) в RegUser.doPost (RegUser.java:13) в
javax.servlet.http.HttpServlet.service (HttpServlet.java:641) в
javax.servlet.http.HttpServlet.service (HttpServlet.java:722) в
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:304)
в
org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210)
в
org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:240)
в
org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:164)
в
org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:462)
в
org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:164)
в
org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:100)
в
org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:563)
в
org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118)
в
org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:403)
в
org.apache.coyote.http11.Http11AprProcessor.process (Http11AprProcessor.java:286)
в
org.apache.coyote.http11.Http11AprProtocol $ Http11ConnectionHandler.process (Http11AprProtocol.java:272)
в
org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run (AprEndpoint.java:1730)
в java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (Неизвестно
Источник) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (Неизвестно
Источник) на java.lang.Thread.run (Неизвестный источник)
В базе данных у меня 4 столбца usrid, username, password, email
имя пользователя имеет тип nvarchar(MAX)
.
Все вроде нормально, но я все еще получаю это исключение, почему ?? [Строка 55 в stacktrace - это строка ps.setString (2, newUp.getUsrName ());]