пустое исключение ResultSet - PullRequest
       17

пустое исключение ResultSet

2 голосов
/ 04 октября 2011

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

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

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

  • row1 movieName1
  • row2 movieName2
  • row3
  • row4 movieName2

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

Ответы [ 5 ]

3 голосов
/ 04 октября 2011

Похоже, что column1 не имеет значения для одной строки ... поэтому 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 голосов
/ 04 октября 2011

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

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

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

1 голос
/ 04 октября 2011

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

1 голос
/ 04 октября 2011

возможно, вы получите нулевой указатель, потому что row3 имеет нулевое значение, и вы пытаетесь "toString" -it

...