2016-06-23 7 views
-1

프로그램을 실행할 때 NullPointerException 오류가 발생합니다. 몇 가지 사항을 읽었지만 일부 변경을 시도했지만 여전히 오류가 발생했습니다. 여기에 코드입니다 :특정 NullPointerException 오류를 해결할 수 없습니다.

public class Farm { 
private Connection connect; 
private PreparedStatement prep; 
public Farm(){ 
    try { 
     Class.forName("oracle.jdbc.OracleDriver"); 
     DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "SHID","pikachu"); 

    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

public void AddAnimal(String name, int age, double weight, String specie){ 

    String sql="INSERT INTO ANIMALFARM VALUES('"+name+"',"+age+", "+weight+",'"+specie+"')"; 
    try { 
     prep= connect.prepareStatement(sql); 

     prep.executeUpdate(); 

    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

}} 

내 주요 클래스 :

public class Test { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Farm ferme= new Farm(); 
    ferme.AddAnimal("Cerbre", 43, 34.00, "dog"); 
}} 

그리고 난 당신의 코드를보고이 오류

Exception in thread "main" java.lang.NullPointerException 
at Farm.AddAnimal(Farm.java:31) 
at Test.main(Test.java:7) 
+0

연결 객체'connect'를 초기화하지 않았습니다. – Sanjeev

+0

'connect'에 할당 된 것이 아무것도 없습니다 ... –

답변

0

을 보내고있어, 나는 connect가 초기화되지 않는 것을 볼 수 이것은 NPE의 주된 이유 일 수 있습니다.

조작하기 전에 초기화해야합니다.

여기서 연결을 선언했습니다 (private Connection connect;;). prep= connect.prepareStatement(sql);으로 전화를 걸었습니다.

는 인스턴스 변수가 기본 널 (null)로하고 그래서 널에 어떤 작업이 NullPointerException이

3

당신이 그 뜻을 연결하지 않으면 당신은 당신의 데이터베이스

connect = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "SHID","pikachu"); 

에 연결 변수를 연결해야합니다 제공합니다 아시다시피 null가되므로 NullPointerException이 발생한다.

1

connect은 Connection 객체로 초기화되지 않는다.

connect = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "SHID","pikachu"); 
관련 문제