исключение нулевого результирующего набора

#java #oracle #nullpointerexception #resultset

#java #Oracle #исключение nullpointerexception #результирующий набор

Вопрос:

Я хочу подключиться к oracle и получить некоторые записи.

 java.sql.ResultSet r = s.executeQuery("Select * from table1");
while (r.next()==true) {
    System.out.println(r.getString("column1").toString());  
      }
  

таблица 1 включает подобные строки

  • строка 1 movieName1
  • row2 movieName2
  • строка 3
  • row4 movieName2

Я получаю «Исключение в потоке»main» java.lang.Ошибка NullPointerException» при выполнении приведенного выше кода. Как я могу это исправить?

Комментарии:

1. Какие столбцы в вашей таблице? Опишите вашу таблицу.

2. Какая ссылка равна нулю? На самом деле вам не нужно вызывать .toString() ссылку на строку.

Ответ №1:

Ну, похоже column1 , что у него нет значения для одной строки… so getString() возвращает нулевую ссылку, которую вы затем вызываете toString() , что приводит к исключению. Поскольку вы вызываете getString() toString() вызов, он в любом случае бессмыслен, поэтому вы можете переписать его как:

 while (r.next()) {
    System.out.println(r.getString("column1"));  
}
  

Это будет напечатано null вместо этого. Если вы хотите избежать этого, используйте:

 while (r.next()) {
    String name = r.getString("column1");
    if (name != null) {
        System.out.println(name);
    }
}
  

Ответ №2:

  1. Возвращаемое значение r.getString("column1") может быть null , поэтому вы получите a NullPointerException при последующем toString() вызове метода. Перед использованием возвращаемого значения необходимо проверить наличие нулевых значений.

  2. Вам не нужно вызывать toString() здесь. getString Метод уже возвращает строку.

Ответ №3:

Вы не говорите, где именно в вашем коде возникает исключение. Наиболее вероятными причинами являются that s is null или that r.getString("column1") returns null .

Ответ №4:

возможно, вы получаете nullpointer, потому что row3 имеет нулевое значение, и вы пытаетесь «toString» — это

Ответ №5:

Если это первая строка, которую вы опубликовали, которая выдает ошибку, я предполагаю, что переменная s равна нулю (не инициализирована), но поскольку вы не говорите нам точно, какая строка вашего кода выдает ошибку, ее трудно определить.