使用 C# 自动字母数字唯一 Id
Auto alphanumeric Unique Id with C#
字符串总长度为 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");
}
}
}
我的table长得像
CREATE TABLE [dbo].[voiceno](
[ID] [int] IDENTITY(1,1) NOT NULL,
[voiceno] [nvarchar](50) NULL)
你可以有一个获取当前值并为你提供下一个值的函数:
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
也看看
使用 SQL 服务器
的自定义自动生成序列
字符串总长度为 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");
}
}
}
我的table长得像
CREATE TABLE [dbo].[voiceno](
[ID] [int] IDENTITY(1,1) NOT NULL,
[voiceno] [nvarchar](50) NULL)
你可以有一个获取当前值并为你提供下一个值的函数:
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
也看看 使用 SQL 服务器
的自定义自动生成序列