#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:
-
Возвращаемое значение
r.getString("column1")
может быть null , поэтому вы получите aNullPointerException
при последующемtoString()
вызове метода. Перед использованием возвращаемого значения необходимо проверить наличие нулевых значений. -
Вам не нужно вызывать
toString()
здесь.getString
Метод уже возвращает строку.
Ответ №3:
Вы не говорите, где именно в вашем коде возникает исключение. Наиболее вероятными причинами являются that s
is null
или that r.getString("column1")
returns null
.
Ответ №4:
возможно, вы получаете nullpointer, потому что row3 имеет нулевое значение, и вы пытаетесь «toString» — это
Ответ №5:
Если это первая строка, которую вы опубликовали, которая выдает ошибку, я предполагаю, что переменная s равна нулю (не инициализирована), но поскольку вы не говорите нам точно, какая строка вашего кода выдает ошибку, ее трудно определить.