我在Ubuntu上用.NetCore运行npgsql v3.7。
当我执行一个select查询时,结果中任何一行的一个单元格都为空,就会抛出一个异常,并显示错误消息“Column is null”。
我必须通过将select子句中的每一列放在case语句中来解决这个问题,该语句测试是否为空

"CASE WHEN " + fieldName + " IS NULL THEN '' ELSE " + fieldName + " END "

这似乎有点极端,不应该是必要的。有人碰到过这个吗。
谢谢。

最佳答案

你可能想这样读这篇专栏:

using (var reader = cmd.ExecuteReader()) {
  reader.Next();
  var o = reader.GetString(0);   // Or any other of the Get methods on reader
  ...
}

如果列包含空值并且是预期行为,则此代码将失败。在ADO.NET中,在实际获取值之前,需要使用reader.IsDBNull(0)检查空值。这就是数据库API的工作原理。

09-30 17:08
查看更多