我正在尝试用Java添加记录到Sql Server。在此函数中,程序会出现如下错误:
Connected
1
2
Error java.lang.NullPointerException
这是输出..
功能如下:
public class DB {
Connection con = null;
Statement stmt Nnull ;
component cmp = new Component();
public long pSave(Component cmp) {
String i = cmp.getI();
String s = cmp.getS();
String a = cmp.getA();
int t = cmp.getT();
int c = cmp.getC();
System.out.println("1");
try {
System.out.println("2");
stmt = con.createStatement();
System.out.println("3");
String SQL =
"INSERT INTO kisi (cl1,cl2,cl3,cl4,cl5) "
+ "VALUES(" + i + "," + s + "," + a + "," + c + "," + t + ")";
System.out.println("4");
stmt.executeUpdate(SQL);
System.out.println("Success");
return 1;
} catch(Exception e) {
System.out.println("Error " + e);
return 0;
}
}
}
答案 0 :(得分:4)
Connection con = null;
......
stmt = con.createStatement();
^
未初始化连接。您必须连接到DB才能检索数据。
答案 1 :(得分:4)
NullPointerException意味着您正在尝试在null对象上调用方法。 那个null对象是你永远不会初始化的骗局。 您应该添加这两行来初始化它:
Driver d = (Driver)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://server:1433", "userName", "password");
答案 2 :(得分:2)
您需要先创建一个Connection对象。你有: 连接con = null;
因此,您无法从空连接创建语句。
答案 3 :(得分:2)
在您尝试初始化语句时,您没有初始化您正在调用的连接con
。stmt = con.createstatement
答案 4 :(得分:0)
一些调试可能会有所帮助。
您可能会注意到您的输出显示Connected 1 2 Error java.lang.NullPointerException
。 1
和2
表示您已达到第一个和第二个println
语句,Error NPE
表示这些语句失败后会出现一行代码。第三个println
永远不会被击中,这意味着你的NPE发生在2到3之间。这两者之间存在一个单一的陈述,这就是你获得NPE的地方。
现在的问题是,什么可能导致NPE?我将把它作为读者的练习。 :)