com.microsoft.sqlserver.jdbc.SQLServerException:索引2超出范围:( [英] com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range :(

查看:535
本文介绍了com.microsoft.sqlserver.jdbc.SQLServerException:索引2超出范围:(的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在java中有以下代码

I have following code in 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 as :

this code is giving me an IndexOutOfBoundsException as:


数据库异常发生

Database Exception Occured

对于给您带来的不便,我们深表歉意

We are sorry for inconvenience

异常详细信息:com.microsoft.sqlserver.jdbc.SQLServerException:
索引2超出范围。详情:

Exception Details: com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range. Details:

索引2超出范围。

Stack Trace:

Stack Trace:

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 )
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:2 40)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at
org.apache.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)$ b $ java at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(Unknown
Source)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown
Source)at java.lang.Thread。 run(未知来源)

com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range. 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.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)

在数据库中我有4列 usrid,用户名,密码,电子邮件

用户名是 nvarchar(MAX)类型。

一切似乎都很好,但我仍然得到这个例外为什么? [stacktrace中的第55行是行ps.setString(2,newUp.getUsrName());]

Everything seems fine but I am still getting this exception why?? [The line 55 in stacktrace is the line ps.setString(2,newUp.getUsrName());]

推荐答案

不直接与您的问题相关但如果您在SQL中使用XQuery时错过了单引号,则可能会出现此错误。我有以下SQL:

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. I had this with the following SQL:

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

需要

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

(HELLO WORLD!之后缺少单引号)

(single quote missing after with "HELLO WORLD!")

因此我的情况下的异常是SQL驱动程序抛出的错误异常。

So the exception in my case was the wrong exception thrown by the SQL driver.

这篇关于com.microsoft.sqlserver.jdbc.SQLServerException:索引2超出范围:(的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆