与null比较,不在java中工作

时间:2014-06-24 10:42:22

标签: java android sqlite

我一直试图在条件下与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显示authorEmailnull,但仍然在else

我也试过了authEmail.equals(null),但这也没有用。

如何修改if条件以完美检查null?
提前谢谢。

4 个答案:

答案 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
}