使用C#自动字母数字唯一ID

时间:2019-04-07 07:33:58

标签: c# alphanumeric

总字符串长度为5个字符。我有一个方案,ID以:A0001开头,以:A9999,B0001到B9999结束

现在

  • 如果我的产品(a)将具有A0001,A0002等...
  • 如果我的产品(b)具有b0001,b0002等...

如何创建这种格式?

我尝试过:

int a;
        using (SqlCommand command2 = new SqlCommand("select * from voiceno WHERE ID = '1'", con))
        {
            con.Close();
            con.Open();

            SqlDataReader dr;
            dr = command2.ExecuteReader();
            if (dr.Read())
            {
                string val = dr["voiceno"].ToString();
                if (val == "0")
                {
                    txtinvoiceno.Text = "00001";
                }
                else
                {
                    a = Convert.ToInt32(dr["voiceno"].ToString());         
                    a = a + 1;
                    txtinvoiceno.Text = a.ToString("00000");
                }
            }

        }

我的桌子看起来像

CREATE TABLE [dbo].[voiceno](
[ID] [int] IDENTITY(1,1) NOT NULL,
[voiceno] [nvarchar](50) NULL)

1 个答案:

答案 0 :(得分:4)

您可以有一个获取当前值并为您提供下一个值的函数:

public string Next(string cur)
{
    int num = int.Parse(cur.Substring(1));
    char chr = cur[0];
    num++;
    if (num > 9999)
    {
        num = 0;
        chr++;
    }
    return chr + num.ToString().PadLeft(4, '0');
}

要使其从数据库中获取最后一个:

您可以从数据库中获取当前最大的ID,例如:

select Max(id) from voiceno

还要看看 Custom Auto-Generated Sequences with SQL Server

Live Demo