Prepared statement Parameter index out of range (0 <1)

Not an expert in a web application, recently I am writing a small webapp for my mobile application using servlets. My task is to receive data from the client and put it in db. everything works fine except for my database insert statement, which I am trying to achieve with PreparedStatement.

 // This is how my insert statement looks like private String INSERT_INTO_DEVICES = "INSERT INTO travlemate.devices (owner," + "deviceid,gcmid) VALUES (?,?,?)"; // This is how am trying to insert PreparedStatement preparedStmt = mConn.prepareStatement(INSERT_INTO_DEVICES); preparedStmt.setString(0, data.getDeviceNumber()); preparedStmt.setString(1, data.getDeviceID()); preparedStmt.setString(2,data.getGcmId()); preparedStmt.execute(); mConn.close(); 

but when I perform this task I get the following exception

 java.sql.SQLException: Parameter index out of range (0 < 1 ). at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910) at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2791) at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:3627) at com.mkgcorp.travelweb.data.DataManager.registerGCMData(DataManager.java:35) at com.mkgcorp.travelweb.controller.Loader.doPost(Loader.java:46) at javax.servlet.http.HttpServlet.service(HttpServlet.java:644) at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) 

I seriously tried all kinds of things that I am capable of, but this exception does not go away, is any idea on the same?

Thanks Techfist

+6
source share
2 answers

PreparedStatement parameter indices start at 1

 preparedStmt.setString(1, data.getDeviceNumber()); ... 
+25
source
 PreparedStatement preparedStmt = mConn.prepareStatement(INSERT_INTO_DEVICES); preparedStmt.setString(1, data.getDeviceNumber()); preparedStmt.setString(2, data.getDeviceID()); preparedStmt.setString(3,data.getGcmId()); preparedStmt.execute(); mConn.close(); 

Jdbc parameters are not null-indexed. It starts at 1, since all indexes in database related operations start at 1.

+4
source

Source: https://habr.com/ru/post/980007/


All Articles