Как добавить значение в объекте в части catch? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть следующий метод в моем проекте.Когда я ловлю SQLException, например Duplicate entry '505051' for key 'ID_UNIQUE', мне нравится добавлять сообщение к obj.

Однако строка obj.put (e.getMessage()); говорит мне Null pointer access: The variable obj can only be null at this location.Вы знаете, как добавить жало в obj?

public JSONArray insert_patient_data(String name, String surname) {
        JSONArray obj = null;
        Connection conn = this.getDBMySQLCon();
        ResultSet rs = null;
        String queryString = "CALL insert_patient (?,?)";
        PreparedStatement preparedStmt = null;
        try {
            preparedStmt = conn.prepareCall(queryString);
            preparedStmt.setString(1, name);
            preparedStmt.setString(2, surname);


            boolean results = preparedStmt.execute();
            int rowsAffected = 0;


            conn.close();
            return obj;

        } catch (SQLException e) {
            e.printStackTrace();
            System.out.print(e.getMessage());
            obj.put (e.getMessage());
            return obj;
  }

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Проблема в объекте.Во второй строке вы написали JSONArray obj = null; и никогда не создавали новый JSONArray.Итак, когда вы пишете obj.put (e.getMessage());, obj по-прежнему равен нулю!И это является причиной вашего сообщения об ошибке.

Попробуйте сделать:

 JSONArray obj = new JSONArray();

Тогда ваш код должен работать.

0 голосов
/ 26 ноября 2018

Вы инициализируете ваш объект в null и никогда не устанавливаете его, прежде чем использовать его в инструкции catch.

По крайней мере, вы должны создать его экземпляр с ненулевым объектом:

JSONArray obj = new JSONArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...