-4

フォームからDBにデータを追加しようとすると、次のようなエラーが発生します。

例外

org.apache.jasper.JasperException:java.lang.NumberFormatException:nullルート原因

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);
    }

%>

誰かがこれについて私を助けることができますか?ありがとうございました。

4

2 に答える 2

2

java.lang.NumberFormatException: nullStringnull引数をに変換しようとしているという事実Integer、またはがString有効な数値ではないという事実への明確なポインタのようです。

次の行でnull/無効な整数を確認します。

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

また、代わりに使用することをお勧めします。これにより、形式が正しくないためにnullまたは初期化できない場合にInteger、それらをに渡すことができます。PreparedStatementString

于 2012-09-18T17:52:45.800 に答える
2

これらの3行の1つが問題を引き起こしているように思われます。

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

それらはすべて完全に数値であると確信していますか?それらの1つが空、null、未設定、またはのような任意の種類の区切り文字がある場合1-800-123-4567、数値として格納することはできず、。Integer.ParseInt()をスローしNumberFormatExceptionます。

編集:あなたはあなたの電話番号が10桁で完全に数字であると言います。それでも、JavaのInteger精度はそれほど高くないため、問題が発生します。実際、約20億を超える数を格納することはできません。

于 2012-09-18T17:53:37.247 に答える