账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    java.sql.SQLException: Parameter index out of range
    19
    0

    Mysql创建存储过程:

    create procedure s_add(in a int, in b int, out sum int)  
    begin  
        set sum = a + b;  
    end

    之后这是Java代码

    package ch04.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Types;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class CstmtExample extends HttpServlet{
        private String url;
        private String user;
        private String password;
        public void init() throws ServletException {
            ServletContext sc = getServletContext();
            String driverClass = sc.getInitParameter("driverClass");
            url = sc.getInitParameter("url");
            user = sc.getInitParameter("user");
            password = sc.getInitParameter("password");
            try {
                Class.forName(driverClass);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }        
        }
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            Connection conn = null;
            CallableStatement cstmt = null;
            try {
                conn = DriverManager.getConnection(url, user, password);
                cstmt = conn.prepareCall("{call s_add(?, ?, ?)}");
                cstmt.setInt(1, 5);
                cstmt.setInt('b', 6);
                cstmt.registerOutParameter(3, Types.INTEGER);
                cstmt.execute();
                int ret = cstmt.getInt(3);
                PrintWriter out = resp.getWriter();
                out.println(ret);
                out.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }    
        }
    }
    

    连接没问题,就是对于控制台输出的报错不知道怎么改?

    java.sql.SQLException: Parameter index out of range (98 > number of parameters, which is 3).
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)

    这是控制台报错。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 傻ㄋ吧唧 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部