我在互联网上发布了从过去12小时开始,发现有太多用户正面临这个问题,但他们都没有能够摆脱那个, 我创建了一个JDialog,它有TextFields,我试图从那些文本字段获取输入,并将其存储在DataBase中, 但Givi是以下例外。
Exception occurred during event dispatching:
Connection ok
Adnan
java.lang.NullPointerException
at srvrDataBaseClass.setPersonStatement(srvrDataBaseClass.java:90)
at srvrDataBaseClass.insertPerson(srvrDataBaseClass.java:71)
at EnrollmentForm.setPerson(EnrollmentForm.java:90)
这是StackTrac指向的代码,
public void setPersonStatement(String nm,String fn,String cn,String add, byte[] fpt) {
String Sql = "INSERT INTO PERSON (NAME, FNAME, CNIC, ADDR, FPT) VALUES ( ?,?,?,?,?)";
try {
if(con==null){
System.out.println("Connection error"); <---------------- Connection is Not Closed
}
else {
System.out.println("Connection ok"); <------Connection ok
}
con.prepareStatement(Sql);
System.out.println(nm); <----- This is Line :90, But You can see its not Null, as the Value 'Adnan' is printed on cmd,
pst2.setString(1, nm);
pst2.setString(2, fn);
pst2.setString(3, cn);
pst2.setString(4, add);
pst2.setBytes(5, fpt);
pst2.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQL Error");
e.printStackTrace();
}
}
所以谁能告诉我,我的代码错误
注意:DataBase是SQL Server 2008,
答案 0 :(得分:5)
你的意思是
pst2 = con.prepareStatement(Sql);
?似乎pst2
是null
并且将保持在
pst2.setString(1, nm);
这实际上可能会引发NPE。
查看javadoc了解您尝试使用的方法。
答案 1 :(得分:1)
con.prepareStatement(Sql);
未分配给正确的PreparedStatement变量
写为
pst2= con.prepareStatement(Sql);