C#流水号生成汇总(二)

基于方式是获取数据表中的最大ID,然后根据规则自动生成。

 一、 

本文转载:http://www.cnblogs.com/gdjlc/archive/2010/03/05/2086913.html

流水号由8位日期加8位顺序号组成,如2010030200000056。
先从数据库中取中最大的流水号,和此时要生成的日期比较是否在同一天,是则顺序号加1,否则重新以此时日期生成流水号

sql:
select max(serialnumber) as maxSerialNumber from tb


       /// <summary>
        /// 生成充值流水号格式:8位日期加8位顺序号,如2010030200000056。
        /// </summary>
        public string GetSerialNumber(string serialNumber)
        {
            if (serialNumber != "0")
            {
                string headDate = serialNumber.Substring(0, 8);
                int lastNumber = int.Parse(serialNumber.Substring(8));
                //如果数据库最大值流水号中日期和生成日期在同一天,则顺序号加1
                if (headDate == DateTime.Now.ToString("yyyyMMdd"))
                {
                    lastNumber++;
                    return headDate + lastNumber.ToString("00000000");
                }
            }
            return DateTime.Now.ToString("yyyyMMdd") + "00000001";
        }

二、

 本文转载:http://matianlong1001.blog.163.com/blog/static/40781191200951112135104/

/生成消费单号,按日期生成单号,默认是年月日+四位数字,如:200906010001;后四位数字可以自动增长位数。 ///LastNumStr目前数据库中最后的单号 public static String Assignment(String LastNumStr) { string number0 = ""; DateTime date = System.DateTime.Now; string year = date.Year.ToString(); string month = date.Month.ToString(); string day = date.Day.ToString(); if (month.Length < 2) month = '0' + month; if (day.Length < 2) day = '0' + day; string ymd = year + month + day; if (LastNumStr.Length < 8 || LastNumStr.Substring(0, 8) != ymd) { return ymd + "0001"; } else { Int32 clientnumber = Convert.ToInt32(LastNumStr.Substring(8, LastNumStr.Length - 8)) + 1; if (clientnumber.ToString().Length > LastNumStr.Length - 8) { return ymd + clientnumber.ToString(); } else { for (int i = 0; i < LastNumStr.Length - 8 - clientnumber.ToString().Length; i++) { number0 += "0"; } return ymd + number0 + clientnumber.ToString(); } } }
View Code

 

你可能感兴趣的:(C#)