0

我想生成一个类似于 TMP-0001354 的唯一编号,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();
    }

有人请帮助我。

4

5 回答 5

2
System.Guid.NewGuid().ToString()

这会生成一个唯一编号。将常量部分附加到此 guid。

于 2012-07-27T06:12:38.870 回答
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);
            }
        }

它对我很好。希望我对你有所帮助。

于 2012-07-27T06:26:00.337 回答
0

您可以使用迷你哈希、guid,也可以使用时间年月日秒毫秒或时间戳。

制作唯一 ID 的方法有很多

于 2012-07-27T06:11:47.040 回答
0

您可以尝试System.Guid.NewGuid,它会生成一个全局唯一标识符 (GUID)

于 2012-07-27T06:15:31.893 回答
0
return string.Format("TMP-{0:d}", DateTime.Now.Millisecond);

另请参阅此 SO 帖子:

于 2012-07-27T06:16:00.407 回答