#java #android #sqlite
#java #Android #sqlite
Вопрос:
Я пытался сравнить с null
условием if, но оно не работает и всегда переходит в Else. Ниже приведен код,
String authEmail = cursor.getString(cursor.getColumnIndexOrThrow("AUTHOR_EMAIL"));
Log.i(gtag, "author email => " authEmail);
if (authEmail == null ) {
Log.i(gtag, "in author check - IF NULL");
} else {
Log.i(gtag, "in author check - ELSE ");
}
Вот cursor
результат запроса базы данных SQLite и AUTHOR_EMAIL
имя столбца. Logcat показывает адрес электронной почты автора как null, но все равно он входит в ELSE. Ниже приведен Logcat:
06-24 15:30:55.307: I/GCA-Abs-Con(1282): author email => foo@bar.de
06-24 15:30:55.307: I/GCA-Abs-Con(1282): in author check - ELSE
06-24 15:30:55.357: I/GCA-Abs-Con(1282): author email => null
06-24 15:30:55.357: I/GCA-Abs-Con(1282): in author check - ELSE
3-я строка logcat показывает authorEmail
null
, но все равно она входит else
.
Я тоже пытался authEmail.equals(null)
, но это тоже не сработало.
Как я должен изменить условие if, чтобы проверить на null идеально?
Заранее спасибо.
Комментарии:
1. попробуйте if(authEmail.equals(null));{ }
2. он использует authEmail как строку «null» вместо нулевого объекта
3. Нет, вы не используете
equals
для проверки null.4. Пробовал также equals, но не сработало
5. Похоже, что authEmail — это строка «null», а не значение null. Как следует из приведенных ниже ответов, выполните equals . Я бы предложил ответ DarkDusts, поскольку его ответ не вызовет никаких исключений NullPointerExceptions
Ответ №1:
Чтобы проверить, имеет ли поле базы данных значение SQL NULL, используйте метод isNull курсора:
int index = cursor.getColumnIndexOrThrow("AUTHOR_EMAIL");
if (cursor.isNull(index)) {
...
} else {
String authEmail = cursor.getString(index);
...
}
Комментарии:
1. Сделал это — на самом деле, это было самое непосредственное решение.
Ответ №2:
попробуйте это
if (authEmail.equals("null")) {
вместо
if (authEmail == null ) {
Используется .equals()
для сравнения строк
Комментарии:
1. я думаю
authEmail.equals(null)
, должно бытьauthEmail.equals("null")
2. Моя Java устарела, но разве вы не получаете исключение, если
authEmail
естьnull
, и поэтому пытаетесь вызвать метод onnull
?3. Спасибо! Я попробовал authEmail.equals(null), но это не сработало, но когда я попробовал authEmail.equals («null»), это сработало! Это потому
null
, что здесь должно рассматриваться как значение?4. @ShumailMohy-ud-Din именно вы добавили null
5. а также, было бы лучше проверять
"null".equals(authEmail)
Ответ №3:
Сделайте это так:
if (authEmail == null || authEmail.equals("null")) {
...
}
Сначала проверяется, является ли переменная null. Если это не так, проверяется, является ли строка текстом null
. Конечно, лучше проследить, почему строка может содержать текст null
, который выглядит непреднамеренным.
Комментарии:
1. Я попробовал authEmail.equals(null), но это не сработало, но когда я попробовал authEmail.equals («null»), это сработало! Это потому
null
, что здесь должно рассматриваться как значение?2. Нет, это потому, что переменная содержит текст. И этот текст оказывается
null
. Как вString text = "null";
Ответ №4:
Используйте это
if (authEmail == null || authEmail.equalsIgnoreCase("null")) {
// handle null case
} else {
// handle other case
}