我想生成一个类似于TMP-0001354的Uniq数字,TMP将始终相同,只有数字会得到更改,这不应该在表格中重复。
我想要一个exp。应该在c#中的代码,我将在表中插入记录时调用该函数。我使用的SQL服务器数据库
我正在尝试这个我不知道它能否正常工作。
private string RandomNumberGenerator()
{
int maxSize = 8;
int minSize = 5;
char[] chars = new char[62];
string a;
a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
chars = a.ToCharArray();
int size = maxSize;
byte[] data = new byte[1];
RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
crypto.GetNonZeroBytes(data);
size = maxSize;
data = new byte[size];
crypto.GetNonZeroBytes(data);
StringBuilder result = new StringBuilder(size);
foreach (byte b in data)
{ result.Append(chars[b % (chars.Length - 1)]); }
return result.ToString();
}
有人请帮助我。
答案 0 :(得分:2)
System.Guid.NewGuid().ToString()
这会生成一个唯一的数字。在这个指南中附加不变的部分。
答案 1 :(得分:2)
对于生成uniq号码,请使用此号码(号码可以从0开始):
string number_s = "TMP-" + RandomNumber(0, 9) + RandomNumber(0, 9) + RandomNumber(0, 9) + RandomNumber(0, 9) + RandomNumber(0, 9) + RandomNumber(0, 9) + RandomNumber(0, 9);
或者这个(更短,但会以1开头):
string number_s = "TMP-" + RandomNumber(1000000, 9999999);
这是RandomNumber
的代码:
private static readonly Random random = new Random();
private static readonly object syncLock = new object();
public int RandomNumber(int min, int max)
{
lock (syncLock)
{ // synchronize
return random.Next(min, max);
}
}
对我来说很好。希望我帮助过你。
答案 2 :(得分:0)
你可以使用迷你哈希,guid,你也可以使用时间年月日秒数或时间戳。
制作唯一身份证的方法有很多种
答案 3 :(得分:0)
答案 4 :(得分:0)
return string.Format("TMP-{0:d}", DateTime.Now.Millisecond);
也看到这个SO帖子: