我想在生成一个前段为字母,中段为年份,后段为递增的数,这样的一个ID如:XT20120012
我想从服务器提取时间,不想从客户端提取,而且怎么排除多用户同时生成时的重复?还有一个问题就是怎么才能让这个ID在年份改变的时候重新从0001开始排序哪?请各位大神给段代码!!谢谢!本人菜鸟中的菜鸟,请各位大神写的细一点,麻烦了!!

解决方案 »

  1.   

    public static string AutoID(string TableName, string FiledName)
            {
                string SqlString = "select Max(" + FiledName + ")  from  " + TableName + "";            
                string ReturnID = DateTime.Now.ToString("XTyyyy");
                using (SqlConnection connetion = new SqlConnection(connectionString))
                {
                    connetion.Open();
                    using (SqlCommand Command =new SqlCommand(SqlString,connetion))
                    {                  
                        string str = Command.ExecuteScalar().ToString();
                        if (!string.IsNullOrEmpty(str))
                        {                        
                            if (str.Substring(0, 6) != ReturnID)
                            {
                                ReturnID += ReturnID + "0001";
                            }
                            else
                            {
                                str = str.Substring(str.Length - 4, 4);
                                lReturnID += (Convert.ToInt32(str) + 1).ToString("0000");
                            }
                        }
                        else
                        {
                            ReturnID += "0001";
                        }
                    }                    
                }
                return ReturnID;
            }
      

  2.   

    这个改一下if (str.Substring(0, 6) != ReturnID)
                            {
                                ReturnID +=  "0001";
                            }
      

  3.   

    public static string AutoID(string TableName, string FiledName)
            {
                string SqlString = "select Max(" + FiledName + ")  from  " + TableName + "";            
                string ReturnID = DateTime.Now.ToString("XTyyyy");
                using (SqlConnection connetion = new SqlConnection(connectionString))
                {
                    connetion.Open();
                    using (SqlCommand Command =new SqlCommand(SqlString,connetion))
                    {                  
                        string str = Command.ExecuteScalar().ToString();
                        if (!string.IsNullOrEmpty(str))
                        {                        
                            if (str.Substring(0, 6) != ReturnID)
                            {
                                ReturnID += "0001";
                            }
                            else
                            {
                                str = str.Substring(str.Length - 4, 4);
                                ReturnID += (Convert.ToInt32(str) + 1).ToString("0000");
                            }
                        }
                        else
                        {
                            ReturnID += "0001";
                        }
                    }                    
                }
                return ReturnID;
            }