2016-06-23 10 views
-1

Ich habe einen NullPointerException-Fehler, wenn ich mein Programm ausführe, habe ich ein paar Dinge darüber gelesen und habe versucht, einige Änderungen vorzunehmen, aber immer noch den Fehler zu bekommen. hier ist der Code:kann einen bestimmten NullPointerException-Fehler nicht lösen

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

}} 

Meine Hauptklasse:

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

Und ich diesen Fehler mit

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

Sie nicht Connection-Objekt initialisiert 'connect' – Sanjeev

+0

ich' connect' nichts sehen zugewiesen ... –

Antwort

0

, indem Sie den Code suchen, ich sehe, dass connect nicht initialisiert und dies könnte der Hauptgrund für NPE sein.

Sie müssen initialisieren, bevor Sie daran arbeiten.

Sie haben hier die Verbindung private Connection connect;; deklariert und dann rufen Sie prep= connect.prepareStatement(sql); an.

Wie Sie wissen Instanzvariablen standardmäßig null sind und so jede Operation auf null gibt Nullpointer

3

Sie müssen Ihre connect Variable in Ihre Datenbank

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

Link, wenn Sie nicht, dass Willen verbinde null sein, so erhalten Sie eine NullPointerException

1

Ihre connect ist nicht mit einem Connection-Objekt initialisiert. Sie es mit Verbindungsobjekt zuordnen müssen, um es zu beheben

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