2011-11-03 54 views
0

我正在嘗試向Java中的Sql Server添加記錄。在此功能,程序給出這樣的錯誤:java.lang.NullPointerException **錯誤?

Connected 
1 
2 
Error java.lang.NullPointerException 

它是輸出..

功能如下:

public class DB { 

    Connection con = null; 
    Statement stmt Nnull ; 
    component cmp = new Component(); 

    public long pSave(Component cmp) { 
     String i = cmp.getI(); 
     String s = cmp.getS(); 
     String a = cmp.getA(); 
     int t = cmp.getT(); 
     int c = cmp.getC(); 

     System.out.println("1"); 

     try { 
      System.out.println("2"); 
      stmt = con.createStatement(); 

      System.out.println("3"); 
      String SQL = 
       "INSERT INTO kisi (cl1,cl2,cl3,cl4,cl5) " 
       + "VALUES(" + i + "," + s + "," + a + "," + c + "," + t + ")"; 

      System.out.println("4"); 
      stmt.executeUpdate(SQL); 

      System.out.println("Success"); 

      return 1; 
     } catch(Exception e) { 
      System.out.println("Error " + e); 
      return 0; 
     } 
    } 

} 
+3

你沒有初始化你是當你試圖初始化語句調用Connection(「CON」)。(「語句= con.createstatement」 ) – Rob

+0

全堆棧跟蹤請?不要只打印異常消息,而是隱藏真正發生的事情。爲了這個目的,使用e.printStackTrace() – pcalcao

回答

4
Connection con = null; 
...... 
stmt = con.createStatement(); 
     ^

的連接未初始化。您必須連接到數據庫才能檢索數據。

2

您需要先創建一個連接對象。您有: Connection con = null;

所以,你不能從一個連接是空的創建一個語句。

2

你沒有初始化連接con你是當你試圖初始化聲明,呼籲.. stmt = con.createstatement

0

有點調試可能會有所幫助。

您可能會注意到您的輸出顯示爲Connected 1 2 Error java.lang.NullPointerException12建議您已達到第一個和第二個println語句,並且Error NPE表示在這些語句之後的一行代碼失敗。第三個println從未被擊中,這意味着你的NPE發生在2到3之間。這兩者之間存在一個單一的聲明,這就是你獲得NPE的地方。

所以現在的問題是,什麼可能導致NPE?我將把它作爲讀者的練習。 :)

4

NullPointerException意味着您試圖調用空對象的方法。 該空對象是你永遠不會初始化的。 您應該添加以下兩行初始化:

Driver d = (Driver)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://server:1433", "userName", "password"); 
+0

感謝大家,問題現在已經解決:) – andveand

相關問題