简体   繁体   English

com.microsoft.sqlserver.jdbc.SQLServerException: 索引 2 超出范围:(

[英]com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range :(

I have following code in java我在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();

this code is giving me an IndexOutOfBoundsException as:这段代码给了我一个IndexOutOfBoundsException为:

Database Exception Occured发生数据库异常

We are sorry for inconvenience给您带来不便,我们深表歉意

Exception Details: com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range.异常详细信息:com.microsoft.sqlserver.jdbc.SQLServerException:索引 2 超出范围。 Details:细节:

The index 2 is out of range.索引 2 超出范围。

Stack Trace:堆栈跟踪:

com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range. com.microsoft.sqlserver.jdbc.SQLServerException:索引 2 超出范围。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(SQLServerPreparedStatement.java:700) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setValue(SQLServerPreparedStatement.java:709) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setString(SQLServerPreparedStatement.java:1034) at DBOps.addUser(DBOps.java:55) at RegUser.doPost(RegUser.java:13) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171) 在 com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(SQLServerPreparedStatement.java:700) 在 com.microsoft.sqlserver.jdbc.SQLServerValuePreparedStatement.set (SQLServerPreparedStatement.java:709) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setString(SQLServerPreparedStatement.java:1034) at DBOps.addUser(DBOps.java:55) at RegUser.doPost(RegUser.java:13) at 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。在 org.apache 上调用(StandardContextValve.java:164)。 catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:286) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:272) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1730) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve(ErrorReportValve) 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) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:286) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:2722) org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1730) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run (Unknown Source) at java.lang.Thread.run(Unknown Source)

In database I have 4 columns usrid, username, password, email在数据库中,我有 4 列usrid, username, password, email

username is of nvarchar(MAX) type.用户名是nvarchar(MAX)类型。

Everything seems fine but I am still getting this exception why??一切似乎都很好,但我仍然收到此异常,为什么? [The line 55 in stacktrace is the line ps.setString(2,newUp.getUsrName());] [stacktrace 中的第 55 行是 ps.setString(2,newUp.getUsrName());]

Not directly related to your issue but it is possible to get this error if you miss a single quote somewhere when using XQuery within SQL.与您的问题没有直接关系,但如果在 SQL 中使用 XQuery 时在某处遗漏了单引号,则可能会出现此错误。 I had this with the following SQL:我使用以下 SQL 进行了操作:

UPDATE TABLE SET CustomFields.modify('replace value of (/CustomFields/Field[@ID=1]/Value)[1] with "HELLO WORLD!") WHERE ID=?

It needed to be它必须是

UPDATE TABLE SET CustomFields.modify('replace value of (/CustomFields/Field[@ID=1]/Value)[1] with "HELLO WORLD!"') WHERE ID=?

(single quote missing after with "HELLO WORLD!") (“HELLO WORLD!”后缺少单引号)

So the exception in my case was the wrong exception thrown by the SQL driver.所以在我的情况下,异常是 SQL 驱动程序抛出的错误异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 com.microsoft.sqlserver.jdbc.SQLServerException:索引8超出范围 - com.microsoft.sqlserver.jdbc.SQLServerException: The index 8 is out of range 错误:com.microsoft.sqlserver.jdbc.SQLServerException:索引 2 超出范围 - Error: com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range 尝试执行存储过程时收到“ com.microsoft.sqlserver.jdbc.SQLServerException:索引1超出范围。” - Receiving “com.microsoft.sqlserver.jdbc.SQLServerException: The index 1 is out of range.” when trying to execute stored procedure Java PreparedStatement:com.microsoft.sqlserver.jdbc.SQLServerException,索引超出范围 - Java PreparedStatement: com.microsoft.sqlserver.jdbc.SQLServerException, index out of range (com.microsoft.sqlserver.jdbc.SQLServerException:索引0超出范围)异常的含义是什么 - what ( com.microsoft.sqlserver.jdbc.SQLServerException:The index 0 is out of range )exception means com.microsoft.sqlserver.jdbc.SQLServerException 与 jpa - com.microsoft.sqlserver.jdbc.SQLServerException with jpa com.microsoft.sqlserver.jdbc.SQLServerexception:'='附近的语法不正确 - com.microsoft.sqlserver.jdbc.SQLServerexception:incorrect syntax near'=' com.microsoft.sqlserver.jdbc.SQLServerException:用户登录失败 - com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user com.microsoft.sqlserver.jdbc.SQLServerException:无效的列名称“ xxx” - com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'xxx' com.microsoft.sqlserver.jdbc.sqlserverexception:参数编号1无效 - com.microsoft.sqlserver.jdbc.sqlserverexception: the parameter number 1 is not valid
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM