当我尝试将表单中的数据添加到我的数据库时,它给出了一个错误
例外
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);
}
%>
任何人都可以帮我这个吗?谢谢。
答案 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亿的数字。