npgsql:选择空数据会引发异常并出现错误 "Column is Null"

npgsql : Selecting a null data throws exception with error "Column is Null"

我是 运行 npgsql v3.7,在 Ubuntu 上使用 .NetCore。

当我执行 select 查询并且结果中任何行中的单元格为空时,会抛出异常并显示错误消息 "Column is null"。

我不得不通过将 select 子句中的每一列放在测试 NULL

的 case 语句中来解决这个问题
"CASE WHEN " + fieldName + " IS NULL THEN '' ELSE " + fieldName + " END "

这似乎有点极端,应该没有必要。有没有其他人遇到过这个。

谢谢。

我不知道为什么 NULL 值会给你错误,但你可以取消丑陋的 CASE 声明,转而使用 COALESCE:

"COALESCE(" + fieldName + ", '')"

理想情况下,您应该更改配置以使 NULL 值不会导致此问题。

您可能正在尝试阅读这样的专栏:

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 的工作原理。