2011-11-03 3 views
0

자바의 SQL Server에 레코드를 추가하려고합니다. 먼저 Connection 오브젝트를 생성 할 필요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

당신은 당신이 문을 초기화하는 때 당신이 호출 연결 ('사기')을 초기화 didnt가 .. ('STMT = con.createstatement를') – Rob

+0

전체 스택 추적을 수행 하시겠습니까? 예외 메시지를 인쇄하지 마십시오. 실제로 진행중인 작업을 숨길 수 있습니다. 이 목적을 위해, e.printStackTrace() – pcalcao

답변

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

연결 당신이 문을 초기화하는 때 당신이 호출 con를 .. 초기화 일부러. 데이터를 검색하려면 DB에 연결해야합니다.

2

:

Connected 
1 
2 
Error java.lang.NullPointerException 

그것은

기능은 아래와 같다 .. 출력이고 :이 함수에서, 프로그램은 그와 같은 에러를 제공한다. 너는 : Connection con = null;

따라서 연결이 null 인 문을 작성할 수 없습니다.

2

당신은 연결이 초기화되지 stmt = con.createstatement

0

약간의 디버깅이 도움이 될 수 있습니다.

출력에 Connected 1 2 Error java.lang.NullPointerException이 표시 될 수 있습니다. 12은 첫 번째 및 두 번째 println 문에 도달했으며 Error NPE은 그 이후의 코드 행이 실패했다는 것을 나타냅니다. 세 번째 println은 결코 부딪치지 않습니다. 이는 NPE가 2와 3 사이에서 발생했음을 의미합니다.이 두 가지 사이에 단일 성명이 존재하며 이것이 NPE를 받고있는 곳입니다.

이제 문제는 NPE의 원인 일 수 있습니까? 나는 그것을 독자를위한 운동으로 남겨 둘 것이다. :)

4

NullPointerException은 null 개체에서 메서드를 호출하려고한다는 것을 의미합니다. null 객체는 사용자가 초기화하지 않는 것입니다. 당신은 그것을 초기화하는 두 줄을 추가해야합니다

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

덕분에 모든 문제가 해결되었습니다 :) – andveand

관련 문제