如何使用NpgsqlDataReader提取PostgreSQL中cidr类型返回的ValueTuple数据
Npgsql读取PostgreSQL cidr类型字段的方法
NpgsqlDataReader 提供了多种直接读取cidr类型字段的方案,你可以根据业务场景选择:
- 直接读取默认映射的值元组
你已经安装了System.ValueTuple包,可以直接用泛型方法读取,返回结果的第一个元素为网络地址,第二个为子网前缀长度:// 假设cidr列的索引为colIndex if (!reader.IsDBNull(colIndex)) { (IPAddress networkAddr, int prefixLen) = reader.GetFieldValue<(IPAddress, int)>(colIndex); } - 读取Npgsql专属类型
NpgsqlCidr
如果你需要更清晰的属性语义,可以读取Npgsql定义的专属cidr类型,内置Address、Netmask等原生属性:NpgsqlTypes.NpgsqlCidr cidrVal = reader.GetFieldValue<NpgsqlTypes.NpgsqlCidr>(colIndex); IPAddress ip = cidrVal.Address; int mask = cidrVal.Netmask; - 直接读取格式化后的字符串
如果你只需要192.168.1.0/24这类标准cidr格式的字符串,不需要解析地址和前缀,直接调用GetString方法即可:string cidrString = reader.GetString(colIndex);
注意:读取前建议先调用
IsDBNull(colIndex)判断字段是否为空,避免空值抛出异常。
内容的提问来源于stack exchange,提问作者JacquesB
相关产品推荐
相关产品推荐

