日期:2014-05-17 浏览次数:20574 次
        Random random = new Random(Guid.NewGuid().GetHashCode());
        List<int> values = new List<int>();
        for (int i = 0; i < 100; i++)
        {
            int value = random.Next(100000);
            if (!values.Contains(value))
            {
                values.Add(value);
                Response.Write(DateTime.Now.ToString("yyyyMMddHHmmss") + value.ToString("D5") + "<br/>");
            }
        }
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/system.security.cryptography.rngcryptoserviceprovider.aspx
------解决方案--------------------
private string GenerateUniqueID()
       {
           System.Text.StringBuilder sb = new System.Text.StringBuilder();
           string str1 = DateTime.Now.ToString("yyyyMMddHHmmss");
           Random d = new Random(Guid.NewGuid().GetHashCode());
           string str2 = d.Next(10000, 100000).ToString();
           return sb.Append(str1).Append(str2).ToString();
       }
------解决方案--------------------
还可以在每次生成一个之后,加入“Thread.Sleep(1)”,这样使用时间基本不会重复的。
------解决方案--------------------
使用毫秒时间然后后面加上几位的随机数
------解决方案--------------------
为什么不把字段的宽度调整一下,又不会影响历史数据
------解决方案--------------------
yyyyhhddHHMMSS
这是14位了
+随机数3位
17位了
+自增数2位
19位了
或者像楼上几位所说的
Thread.Sleep(1);
延时1毫秒
有一次我就是调用一个自定义函数产生随机数,结果产生的随机数都一样,很纳闷。找了半天才找到原因:计算机运算速度太快了,随机数的种子一样,产生的随机数自然也是一样的。加了一个延时,就好了
------解决方案--------------------
把guid杂凑一下,弄成19位
------解决方案--------------------
public static string job_no(string HeadName)//编码格式
        {
            SqlConnection conn = new SqlConnection(connectionString);
            string s = "";
            // SqlCommand cmd = new SqlCommand();
            // cmd.Connection = conn;
            conn.Open();
            SqlCommand cmd2 = new SqlCommand();
            cmd2.Connection = conn;
            cmd2.CommandText = "declare @s varchar(30)" +
                "set @s=convert(varchar,getdate(),111)+convert(varchar,getdate(),14)" +
               " set @s=replace(@s,'/','')" +
               " set @s=replace(@s,':','')" +
               " set @s=replace(@s,'.','')" +
               " select @s";
            SqlDataReader r = cmd2.ExecuteReader();
            while (r.Read())
            {
                //s = "CL"+r[0].ToString();