无法解决某个NullPointerException错误

时间:2016-06-23 06:39:59

标签: java 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)

3 个答案:

答案 0 :(得分:3)

您必须将您的连接变量链接到您的数据库

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

如果你不这样做,那么connect将为null,所以你得到一个NullPointerException

答案 1 :(得分:1)

您的connect未初始化为Connection对象。你需要为它分配连接对象来修复它

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

答案 2 :(得分:0)

通过查看您的代码,我发现connect未初始化,这可能是NPE的主要原因。

您需要在对其进行任何操作之前进行初始化。

您已在此处声明连接private Connection connect;;,然后您正在呼叫prep= connect.prepareStatement(sql);

如您所知,实例变量默认为null,因此对null的任何操作都会给出nullpointerexception