我运行程序时出现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 :(得分: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