Авто буквенно-цифровой уникальный идентификатор с C # - PullRequest
4 голосов
/ 07 апреля 2019

Общая длина строки составляет 5 символов.У меня есть сценарий, идентификатор начинается с: A0001 и заканчивается: A9999, B0001 до B9999

Сейчас,

  • Если мой продукт (а) будет иметь 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 Ответ

4 голосов
/ 07 апреля 2019

У вас может быть функция, которая получает текущее значение и дает следующее значение:

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');
}

Чтобы получить последнее из базы данных:

Вы можете получить текущий самый большой идентификаториз базы данных, например:

select Max(id) from voiceno

Также посмотрите на Пользовательские автоматически сгенерированные последовательности с SQL Server

Live Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...