0

TMP-0001354 のような Uniq Number を生成したいのですが、TMP は常に同じで、番号のみが変更され、テーブルで重複してはなりません。

経験したい。コードを 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

一意の番号を生成するには、これを使用します (番号は 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

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 に答える
0

ミニ ハッシュ、guid を使用できます。時間、年、月、日、秒、ミリ秒、またはタイムスタンプも使用できます。

一意の ID を作成する方法はたくさんあります

于 2012-07-27T06:11:47.040 に答える