2014-01-29 69 views
1

我從過去12小時的互聯網中發現,發現太多的用戶正面臨這個問題,但是他們都沒有能力擺脫那個, 我hav創建了一個JDialog,其中包含TextFields,我試圖從這些文本字段獲取輸入,並將其存儲在DataBase中,但是Givi中的以下例外。方法中的空指針異常,它設置了準備語句的參數

Exception occurred during event dispatching: 
Connection ok 
Adnan 
java.lang.NullPointerException 
at srvrDataBaseClass.setPersonStatement(srvrDataBaseClass.java:90) 
at srvrDataBaseClass.insertPerson(srvrDataBaseClass.java:71) 
at EnrollmentForm.setPerson(EnrollmentForm.java:90) 

這裏是代碼凡StackTrac指向,

public void setPersonStatement(String nm,String fn,String cn,String add, byte[] fpt) { 
    String Sql = "INSERT INTO PERSON (NAME, FNAME, CNIC, ADDR, FPT) VALUES (?,?,?,?,?)"; 
    try { 
     if(con==null){ 
      System.out.println("Connection error"); <---------------- Connection is Not Closed 
     } 
     else { 
      System.out.println("Connection ok"); <------Connection ok 
     } 


     con.prepareStatement(Sql); 

    System.out.println(nm);  <----- This is Line :90, But You can see its not Null, as the Value 'Adnan' is printed on cmd, 
    pst2.setString(1, nm); 
    pst2.setString(2, fn); 
    pst2.setString(3, cn); 
    pst2.setString(4, add); 
    pst2.setBytes(5, fpt); 

    pst2.executeUpdate(); 

    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     System.out.println("SQL Error"); 
     e.printStackTrace(); 
    } 
    } 

因此任何一個誰可以告訴我,什麼是錯我的代碼

注:數據庫是SQL Server 2008中,

+0

這條線不能(以及它可能的,但我沒有看到你改變'System.out')拋出一個'NullPointerException'。確切地說, –

+1

;這行是錯誤的:con.prepareStatement(Sql);沒有分配給任何東西 – duffymo

回答

5

你的意思做

pst2 = con.prepareStatement(Sql); 

?好像pst2null,將在

pst2.setString(1, nm); 

這可能實際上拋出NPE依然如此。

請查看您嘗試使用的方法的javadoc

+0

謝謝,現在我又收到了一條錯誤消息。 com.microsoft.sqlserver.jdbc.SQLServerException:字符串或二進制數據將被截斷。 \t在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) \t在com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515) \t在com.microsoft.sqlserver .jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404) –

+1

@AdnanAhmadKhan完全不同的問題。你可能會更好地尋找相關的問題或詢問一個提供了所有細節的新問題。檢查你的表模式。字節[]是否有意義,因爲你可以進入該列? –

1
con.prepareStatement(Sql); 

沒有分配到合適的PreparedStatement的變量,

寫爲

pst2= con.prepareStatement(Sql);