如何处理SqlGeometry类型的空几何字段读取报错问题?
你遇到的异常是因为对应字段为数据库NULL时,直接调用GetSqlBytes读取空字段会触发运行时错误,只需要在读取前增加空值判断即可,修改后的代码如下:
SqlGeometry g = null; // 先判断索引为2的字段是否为数据库空值 if (!reader.IsDBNull(2)) { g = new SqlGeometry(); g.Read(new BinaryReader(reader.GetSqlBytes(2).Stream)); } // 若业务需要空值时返回类型安全的空几何对象,可替换为下方逻辑 // else // { // g = SqlGeometry.Null; // }
相关注意事项:
reader.IsDBNull(字段索引)是ADO.NET中判断数据库字段是否为NULL的标准方法,必须在读取字段值前调用,避免空值读取异常- 空值场景下可以根据业务需求选择将变量赋值为
null,或者使用SqlGeometry.Null得到内置的空几何实例 - 如有需要还可以额外校验
reader.GetSqlBytes(2).Stream的可读取状态,避免流损坏导致的异常
内容的提问来源于stack exchange,提问作者shifat
相关产品推荐
相关产品推荐

