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