【问题标题】:Inserting Data into mySQL using JSP使用 JSP 将数据插入 mySQL
【发布时间】:2017-09-10 13:12:56
【问题描述】:

我的错误

HTTP Status 500 - An exception occurred processing JSP page /insertdata.jsp at line 24

异常报告:

An exception occurred processing JSP page /insertdata.jsp at line 24

description The server encountered an internal error that prevented it from 
    fulfilling this request.

异常

org.apache.jasper.JasperException: An exception occurred processing JSP page 
    /insertdata.jsp at line 24

21:             String fname = request.getParameter("firstname");
22:             String emailadd = request.getParameter("email");
23:             String idnumber = request.getParameter("idnum");
24:             int idnum = Integer.parseInt("idnum");
25:         try{
26:         Class.forName("com.mysql.jdbc.Driver");
27:         Connection con = 
DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "root","7597");


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause

java.lang.NumberFormatException: For input string: "idnum"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:580)
java.lang.Integer.parseInt(Integer.java:615)
org.apache.jsp.insertdata_jsp._jspService(insertdata_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

我的插入代码

<% 
        String lname = request.getParameter("lastname");
        String fname = request.getParameter("firstname");
        String emailadd = request.getParameter("email");
        String idnumber = request.getParameter("idnum");
        int idnum = Integer.parseInt("idnum");
    try{
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = 
DriverManager.getConnection("jdbc:mysql://localhost:3306/database", 
"root","7597");
    Statement st = con.createStatement();


    st.executeUpdate("insert into dbtable(lastname, firstname, email, 
idnumber)values('"+lname+"','"+fname+"','"+emailadd+"','"+idnum+"')");
    out.println("data is inserted in the database");

    }catch (Exception e){
    out.println(e);
            }
    %>

我输入的数据

    <form action="insertdata.jsp">

        <tr>
            <td><input text="lastname" type="text" placeholder="Last name"></td>
            <td><input text="firstname" type="text" placeholder="Fist name"></td>
            <td><input text="email" type="email" placeholder="Email"></td>
            <td><input text="idnum" type="int" placeholder="ID number"></td>
            <td><input type="submit" value="Submit"/>   
                <input type="reset" value="Reset"/></td>
        </tr>

    </form>

我的数据库

SELECT * FROM `database`.dbtable;SELECT `dbtable`.`id`,
`dbtable`.`lastname`,
`dbtable`.`firstname`,
`dbtable`.`email`,
`dbtable`.`idnum`
FROM `database`.`dbtable`;

我真的很困惑为什么它不会插入到数据库中。 我正在使用 mysql 工作台、netbeans 编译器和 jsp。

【问题讨论】:

  • 你认为int idnum = Integer.parseInt("idnum") 会做什么?

标签: java mysql jsp jdbc


【解决方案1】:

java.lang.NumberFormatException: For input string: "idnum" 表示字符串值“idnum”不能转换为数字。

你可能打算写

int idnum = Integer.parseInt(idnumber);

因为这是您的参数“idnum”的值。可以试试吗?

【讨论】:

    【解决方案2】:

    您正在尝试解析从数据库中检索的值,然后将其存储在“idnumber”中,因此您必须在 .parseInt() 中使用“idnumber”而不是列名。

    String idnumber = request.getParameter("idnum");
            int idnum = Integer.parseInt("idnum");//old version
    
    
     String idnumber = request.getParameter("idnum");
            int idnum = Integer.parseInt(idnumber);//new version
    

    【讨论】:

      【解决方案3】:

      除了@f1sh 答案,为了防止表单中出现非数字,请使用number 而不是int

      <input text="idnum" type="number" placeholder="ID number"></td>
      

      【讨论】:

        猜你喜欢
        • 2014-07-07
        • 2018-05-30
        • 2021-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-10
        • 1970-01-01
        相关资源
        最近更新 更多