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

时间:2016-04-20 08:47:11

标签: c# sql sql-server winforms

需要根据分支创建员工记录。

我有一个场景,如果选择了分支组合框值xyz branch那么

ID以XYZ-0001

开头

如果选择了组合框值abc branch那么

ID以ABC-0001开头,然后依此类推

请就如何创建此格式提出任何建议。

4 个答案:

答案 0 :(得分:-1)

我建议不要将您的员工ID存储为数据库中的列。它只是糟糕的形式,特别是Bad Normal Form。

我建议您将“员工ID”存储在BranchBranchEmployeeId两个单独的列中。

这将使您能够更快地找出序列中的下一个ID,并且您应该能够使用数据库索引提出诸如“在XYZ分支中有多少员工”之类的问题。

但是我会警告你,总的来说,你需要考虑员工ID表格是否真的有意义。员工有没有搬家?员工可以在多个分支机构工作吗?

答案 1 :(得分:-1)

https://msdn.microsoft.com/en-us/library/ff878091.aspx

为每个分支在SQL Server 1中创建一个序列。

https://msdn.microsoft.com/en-us/library/ff878370.aspx

使用下一个值获取下一个序列号

然后使用C#根据返回值创建ID(或者如果您喜欢SQL使用SQL)。

然后格式化你得到的值:

value = 123;
 Console.WriteLine(value.ToString("00000"));
 Console.WriteLine(combo.SelectedItem.ToString()+ "-" + String.Format("{0:00000}", value));
 // Displays ABC-00123

答案 2 :(得分:-2)

我建议将ID保存为某个唯一值,而不是将ID保存为“XYZ-0001”。

<强> BranchTable

  1. ID(唯一)
  2. 名称
  3. 代码(varchar(3):分支的3个字母代码,例如:XYZ)
  4. ...
  5. <强> EmployeeTable中

    1. ID(唯一)
    2. Number(int:count()+ 1个分支机构中的员工)
    3. BranchID(外键)
    4. employeenumber作为分支机构中员工人数的count()+1,在显示您时可以将'BranchCode'-'EmployeeNumber'显示为员工代码。

      Branch + "-" + String.Format("{0:D4}", employeenumber);

答案 3 :(得分:-2)

最好的方法是,获取最后更新的是来自Db

第1步: 从YourTable中选择MAX(ID); 第2步: 将ID值增加1左右,并使用组合框值附加....