我一直试图在条件下与null
进行比较但是它不起作用并且总是在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?
提前谢谢。
答案 0 :(得分:7)
要检查数据库字段是否具有SQL NULL值,请使用光标的isNull方法:
int index = cursor.getColumnIndexOrThrow("AUTHOR_EMAIL");
if (cursor.isNull(index)) {
...
} else {
String authEmail = cursor.getString(index);
...
}
答案 1 :(得分:3)
试试这个
if (authEmail.equals("null")) {
而不是
if (authEmail == null ) {
使用.equals()
进行字符串比较
答案 2 :(得分:0)
这样做:
if (authEmail == null || authEmail.equals("null")) {
...
}
首先检查变量是否为空。如果不是,则检查字符串是否为文本null
。当然,最好跟踪字符串可以包含看起来无意的文本null
的原因。
答案 3 :(得分:0)
使用此
if (authEmail == null || authEmail.equalsIgnoreCase("null")) {
// handle null case
} else {
// handle other case
}