我不是Web应用程序的专家,最近我正在使用servlet为我的移动应用程序编写一个小的webapp.我的议程是从客户端接收数据,并将其放入数据库.一切都运行正常,除了我的数据库插入语句,我试图使用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();
Run Code Online (Sandbox Code Playgroud)
但在执行此任务时,我收到以下异常
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) …Run Code Online (Sandbox Code Playgroud)