JSP中的空点异常

时间:2012-09-18 17:48:44

标签: database jsp exception glassfish nullpointerexception

当我尝试将表单中的数据添加到我的数据库时,它给出了一个错误

  

例外

     

org.apache.jasper.JasperException:java.lang.NumberFormatException:   空值   根本原因

     

java.lang.NumberFormatException:null

This is my code

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<%@page import="java.util.*"%>
<%@page import="java.io.*" %>
<%
    String firstName = request.getParameter("firstName");
    String secondName = request.getParameter("secondName");
    String gender = request.getParameter("gender");
    String address = request.getParameter("address");
    String city = request.getParameter("city");
    String country = request.getParameter("country");
    int zip = Integer.parseInt(request.getParameter("zip"));
    int mobileNo = Integer.parseInt(request.getParameter("mobileNo"));
    int homePhone = Integer.parseInt(request.getParameter("homePhone"));
    String eMail = request.getParameter("eMail");

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testproject", "root", "123456");
        Statement st = null;
        PreparedStatement ps = null;
        ResultSet rs = null;

        ps = con.prepareStatement("INSERT INTO studentregform (firstName, secondName, gender, address, city, country, zip, mobile, homePhone, email) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

        ps.setString(1, firstName);
        ps.setString(2, secondName);
        ps.setString(3, gender);
        ps.setString(4, address);
        ps.setString(5, city);
        ps.setString(6, country);
        ps.setInt(7, zip);
        ps.setInt(8, mobileNo);
        ps.setInt(9, homePhone);
        ps.setString(10, eMail);

        int result = ps.executeUpdate();




    } catch (Exception e) {
        //out.println("Data not inserted");
        throw new Error(e);
    }

%>

任何人都可以帮我这个吗?谢谢。

2 个答案:

答案 0 :(得分:2)

java.lang.NumberFormatException: null似乎是一个明确的指针,表明您正在尝试将空String参数转换为Integer,或者String不是有效号码。

检查以下行中的空值/无效整数:

int zip = Integer.parseInt(request.getParameter("zip"));
int mobileNo = Integer.parseInt(request.getParameter("mobileNo"));
int homePhone = Integer.parseInt(request.getParameter("homePhone"));

此外,我建议使用Integer代替,以便您仍然可以将它们传递给PreparedStatement,以防它们为空/由于其{的格式不正确而无法初始化{1}}形式。

答案 1 :(得分:2)

看起来这3行中的一行会给你带来问题;

int zip = Integer.parseInt(request.getParameter("zip"));
int mobileNo = Integer.parseInt(request.getParameter("mobileNo"));
int homePhone = Integer.parseInt(request.getParameter("homePhone"));

你确定它们都是完全数字的吗?如果其中一个为空,空,未设置或具有1-800-123-4567之类的任何分隔符,则无法将其存储为数字,Integer.ParseInt()将抛出NumberFormatException

编辑:您说您的电话号码是10位数字,完全是数字。但是,由于Java Integer没有那么精确,你会遇到问题。事实上,它不能存储任何大于约20亿的数字。