npgsql:选择空数据将引发错误,错误为“列为空”

Hug*_*hgo 2 postgresql null npgsql

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

当我执行选择查询并且结果中任何行中的单元格为空时,将引发异常,并显示错误消息“列为空”。

我必须通过将select子句中的每一列放在case语句中测试NULL来解决此问题

"CASE WHEN " + fieldName + " IS NULL THEN '' ELSE " + fieldName + " END "
Run Code Online (Sandbox Code Playgroud)

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

谢谢。

Sha*_*sky 6

您可能正在尝试阅读以下内容:

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

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