以最佳方式在数据库中存储IP地址

Gib*_*boK 2 .net t-sql database

我需要创建一个表来存储黑名单的IP地址,以防我的博客中的垃圾邮件发送者.我想知道:

  • 存储IP地址的最佳数据类型是什么.
  • 我可以在此表中列出您认为对垃圾邮件发送者有用的其他字段.

我使用MS SQL 2008 DB

谢谢你的时间

Nat*_*ips 5

IP v4地址是4个字节,IP v6地址是16个字节,因此将它们存储为varbinary(16)字段。我从您的问题标签中看到您正在使用.Net,因此您可以使用轻松获得这些字节IPAddress.GetAddressBytes()。如果您使用的是Entity Framework或类似的ORM,以下代码将对您有用。

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Net;

    [Required, MinLength(4), MaxLength(16)]
    public byte[] IPAddressBytes { get; set; }

    [NotMapped]
    public IPAddress IPAddress
    {
        get { return new IPAddress(IPAddressBytes); }
        set { IPAddressBytes = value.GetAddressBytes(); }
    }
Run Code Online (Sandbox Code Playgroud)