使用数据库报错“java.sql.SQLException: No value specified for parameter 1”
·
错误日志
java.sql.SQLException: No value specified for parameter 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1737)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1685)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1396)
at dao.impl.UserDaoImpl.selectByPage(UserDaoImpl.java:39)
at service.impl.UserServiceImpl.selectByPage(UserServiceImpl.java:24)
at servlet.UserServlet.doPost(UserServlet.java:38)
at servlet.UserServlet.doGet(UserServlet.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
错误代码
public List<User> selectByPage(int pageIndex, int pageSize) {
// 实例化List集合
List<User> userList = new ArrayList<>();
// 定义
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 获取数据库连接
conn = DBUtils.getConnection();
// 获取分页开始的索引
int startIndex = (pageIndex - 1) * pageSize;
// SQL语句
String sql = "select * from users limit ?,?";
// 获取Statement对象
ps = conn.prepareStatement(sql);
// 获取结果集
rs = ps.executeQuery();
// 遍历结果集
while (rs.next()) {
User user = new User();
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
userList.add(user);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtils.release(conn, ps, rs);
}
return userList;
}
错误原因
没有对传入的参数进行赋值。
解决
对传入的参数进行赋值即可。
正确代码
public List<User> selectByPage(int pageIndex, int pageSize) {
// 实例化List集合
List<User> userList = new ArrayList<>();
// 定义
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 获取数据库连接
conn = DBUtils.getConnection();
// 获取分页开始的索引
int startIndex = (pageIndex - 1) * pageSize;
// SQL语句
String sql = "select * from users limit ?,?";
// 获取Statement对象
ps = conn.prepareStatement(sql);
// 对参数进行赋值
ps.setInt(1, pageIndex);
ps.setInt(2, pageSize);
// 获取结果集
rs = ps.executeQuery();
// 遍历结果集
while (rs.next()) {
User user = new User();
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
userList.add(user);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtils.release(conn, ps, rs);
}
return userList;
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)