java.lang.NullPointerException **错误?

时间:2011-11-03 13:07:38

标签: java sql-server database pointers null

我正在尝试用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;
        }
    }

}

5 个答案:

答案 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)

在您尝试初始化语句时,您没有初始化您正在调用的连接constmt = con.createstatement

答案 4 :(得分:0)

一些调试可能会有所帮助。

您可能会注意到您的输出显示Connected 1 2 Error java.lang.NullPointerException12表示您已达到第一个和第二个println语句,Error NPE表示这些语句失败后会出现一行代码。第三个println永远不会被击中,这意味着你的NPE发生在2到3之间。这两者之间存在一个单一的陈述,这就是你获得NPE的地方。

现在的问题是,什么可能导致NPE?我将把它作为读者的练习。 :)