【问题标题】:How to check for null when using getDouble("columnName")?使用 getDouble("columnName") 时如何检查 null?
【发布时间】:2015-08-25 20:20:00
【问题描述】:

我需要从数据库中检索一个双精度值,它可能存储为空值,因此我需要在检索它之前或之后检测它是否为空值。但是,如果数据库中的值为 null,则 getDouble("columnName") 方法实际上返回 0。

我尝试了这里提供的解决方案,但无济于事(Android Studio 说它无法解析 wasNull() 和 getObject():

How do I in JDBC read a possibly null double value from resultSet?

这是我迄今为止尝试过的:

beer.setRating(beerObj.getDouble("myRating"));
if(beerObj.wasNull()){ //'Cannot resolve method wasNull'
}

还有这个:

Double doubleVal = (Double)beerObj.getObject("myRating"); //'Cannot resolve method getObject()' 

我有其他属性,我正在使用 getString("otherColumnName") 检索并且已正确检索,因此我假设 beerObj 也已正确检索。

是否有其他方法可以在检索之前检查数据库中的双精度值是否为空?

【问题讨论】:

  • wasNull() 和检查getObject("columnName") == null 都是有效的解决方案。您能否分享您遇到的错误?
  • 嗨@Mureinik,当我执行以下操作时:beer.setRating(beerObj.getDouble("myRating")); if(beerObj.wasNull()){ } 我得到“无法解析方法 wasNull()”。此外,当我尝试 getObject() 方法时,我得到“无法解析方法“getObject()”
  • 但是您遇到了什么错误?你能用代码 sn-p 和确切的错误编辑你的问题吗?
  • @Mureinik,我不确定我是否理解您要我发布的内容。我确实在原始帖子中添加了我遇到问题的行。正如我在评论中所说,Android Studio 无法解析这些方法,因此如果不先解析这些方法,我将无法编译它。这样就不会出现编译错误。
  • 当您的问题是关于 JSON 时,您为什么要使用 JDBC 标记并引用 JDBC 问题?

标签: java json android-studio null double


【解决方案1】:

是的,把它放在你的 where 子句中:"WHERE columnname is not null"。如果有记录返回则不是null 如果没有返回记录则为null

【讨论】:

  • 感谢@brso05,这个解决方案奏效了。我最终按照您的建议进行操作,然后使用 beerObj.has("myRating") 检查该属性是否存在。不过我不得不承认,我有点失望,因为我无法从前端检查空值。再次感谢!
  • @Koercion 没问题,很高兴我能帮上忙!
【解决方案2】:

试试if (resultset.getObject("columnName") == null)。如果您尝试使用 getObject() 而不传递值,则很难从您的原始帖子中看出。

【讨论】:

  • 嗨@MHardwick。我输入了 if(beerObj.getObject("myRating")==null) 但我仍然收到“无法解析方法 getObject()”消息。
  • 您可以添加更多上下文吗?具体来说,从 beerObj 的声明开始?
  • 我从数据库检索响应作为 JSON 对象。 JSONObject beerObj = beersJSONArr.getJSONObject(i); ( i 是因为它在 for 循环中)。其余属性被正确检索,当我注释掉 getDouble 行时,代码编译并正确检索数据。
  • 啊,好的!您使用的是 JSONObject 而不是 ResultSet。 JSONObjects 没有 wasNull 或 getObject 方法。请改用if (beerObj.isNull("myRating"))
猜你喜欢
  • 2021-11-26
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 2011-06-12
  • 2014-09-08
  • 2021-08-20
  • 1970-01-01
相关资源
最近更新 更多