You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:45:04