java.lang.NullPointerException ** ошибка? - PullRequest
0 голосов
/ 03 ноября 2011

Я пытаюсь добавить записи на Sql Server в Java. В этой функции программа выдает такую ​​ошибку:

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 ]

4 голосов
/ 03 ноября 2011

NullPointerException означает, что вы пытаетесь вызвать метод для нулевого объекта. Этот нулевой объект - ваш довод, который вы никогда не инициализируете. Вы должны добавить эти две строки для инициализации:

Driver d = (Driver)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://server:1433", "userName", "password");
4 голосов
/ 03 ноября 2011
Connection con = null;
......
stmt = con.createStatement();
        ^

Соединение не инициализировано. Вы должны подключиться к БД для получения данных.

2 голосов
/ 03 ноября 2011

Вы не инициализировали соединение con, которое вы вызываете, когда пытаетесь инициализировать оператор .. stmt = con.createstatement

2 голосов
/ 03 ноября 2011

Сначала необходимо создать объект подключения.У вас есть: Connection con = null;

Таким образом, вы не можете создать оператор из соединения с нулевым значением.

0 голосов
/ 03 ноября 2011

Может помочь небольшая отладка.

Вы можете заметить, что ваш вывод говорит Connected 1 2 Error java.lang.NullPointerException. 1 и 2 предполагают, что вы достигли первого и второго println операторов, а Error NPE предполагает, что строка кода после них завершилась неудачно. Третий println никогда не попадает, что означает, что ваш NPE произошел между 2 и 3. Между этими двумя существует одно утверждение, и именно здесь вы получаете свой NPE.

Итак, вопрос в том, что может быть причиной NPE? Я оставлю это как упражнение для читателя. :)

...