2016-06-23 16 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であり、これは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"); 
関連する問題