【问题标题】:How can I check if a string I have returned from a cursor is empty or null in an Android cursor?如何检查从游标返回的字符串在 Android 游标中是否为空或 null?
【发布时间】:2011-03-27 15:05:50
【问题描述】:

这是我的代码,即使我知道(通过调试器)进入的值是空的,它也总是落入 else 中。

name = cursor.getString(cursor.getColumnIndex("Genus")) + " " + cursor.getString(cursor.getColumnIndex("Species"));

if(name != "" && name != null)
    tv.setText(name);
else
    tv.setText("Error");

【问题讨论】:

    标签: java android string null cursor


    【解决方案1】:

    进行对象比较时,必须使用 Object.equals(Object) 方法。仅当两个对象引用相同的事物时,对对象使用 == 或 != 才会返回 true。这就是为什么你会陷入其他困境。

    name.equals("") 可能是您想要使用的。

    另外,如果你这样做,事情可能会最有效:

    if(name != null && !"".equals(name))
      tv.setText(name);
    else
      tv.setText("Error");
    

    【讨论】:

      【解决方案2】:

      好吧Cptcecil

      使用 try-catch 错误处理机制 .. 而不是 if ... else。

      每当您尝试从空光标读取...它会抛出一个异常,您可以捕获并做出相应的响应而不会破坏您的应用程序。

      谢谢

      【讨论】:

      • 它会抛出什么异常?照原样,他的代码不会抛出异常。事实上,他可以将tv.setText() 设置为null"" 并且不会抛出异常,tv 将只是空的。
      【解决方案3】:

      我知道这是一个老问题,仍在贡献以提供替代解决方案

      如果您在更新行时插入"" 或为空字段插入新记录,则下面提到的解决方案将起作用。

      if(name.length() > 0 )
        tv.setText(name);
      else
        tv.setText("Error");
      

      如果您在更新行时插入null 或为空字段(例如edittext)插入新记录,则下面提到的解决方案将起作用。 或者如果已经在数据库中创建了没有记录的行..

      if(name != null )
        tv.setText(name);
      else
        tv.setText("Error");
      

      如果 itz 稍后没有通过插入 "" 或一些字符串值手动更新,则数据库将空单元格作为 null

      两者都为我工作。

      【讨论】:

        猜你喜欢
        • 2013-02-07
        • 1970-01-01
        • 1970-01-01
        • 2016-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-30
        相关资源
        最近更新 更多