在JSP

2012-09-18 26 views
-4

零點異常,當我試圖從形式到我的DB它給了我一個錯誤添加數據在JSP

例外

org.apache.jasper.JasperException:java.lang中。 NumberFormatException異常: 空 根源

java.lang.NumberFormatException:空

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

%> 

任何人都可以幫助我嗎?謝謝。

+6

在旁註中,我會*不*整數的電話號碼.. – 2012-09-18 17:51:55

+0

我在斯里蘭卡。在這裏,我們只使用10位數字作爲電話號碼。在mySQL中,我創建了相關的字段INT(11)。 – Sumer

回答

2

看來這三條線中的一條會給你提出問題;

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億的任何數字。

+0

是的,他們是數字。在提交表單之前,我已經通過javascrpit驗證了輸入。 – Sumer

+0

但之前我做了同樣的事情,它的工作。 – Sumer

+0

感謝您的信息。問題在於從表單獲取參數。以及保存在INT(11)中的電話號碼沒有任何錯誤。 :)謝謝你在我遇到死路時真正需要的善意幫助。 KIT – Sumer

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

而且,我reccomend使用Integer代替,這樣你仍然可以將它們傳遞到PreparedStatement的情況下,他們是空/罐由於其String表單中的格式不正確而無法初始化。

+0

感謝您的信息。問題在於從表單獲取參數。以及保存在INT(11)中的電話號碼沒有任何錯誤。 :)謝謝你在我遇到死路時真正需要的善意幫助。 KIT – Sumer