在开发办公软件的时候,需要给很多文件什么的东西分配一个编号,是按照日期来的,比如2014.07.10的第一个文件编号就为20140710-1,这一天的第二个文件编号就为20140710-2,以此类推......
我在最近的编程开发中也遇到了类似的问题,经常好几次的修改,终于出来一下方法,较之修改前,这中方法的编号紊乱率大大降低,因为不可能在一个相同时间(精确到秒,甚至更小),两个人同时操作。
不扯这些了,我这个只是自己弄出来的一个方法,也希望大家能找到更好的方法,能完全解决两个人同时操作的问题,下面就直接上代码了
public string autoNum() { string serialnum = string.Empty; string tyear = DateTime.Now.Year.ToString(); string tmonth = DateTime.Now.Month.ToString(); if (Convert.ToInt32(tmonth) < 10) { tmonth = "0" + tmonth; } string tday = DateTime.Now.Day.ToString(); if (Convert.ToInt32(tday) < 10) { tday = "0" + tday; } string prefixdate = tyear + tmonth + tday; SqlHelp sqlx = new SqlHelp(); string strfacx = "select * from tLabelConfirm where SerialNumber like '%" + prefixdate + "%'";//tLabelConfirm是我的一个数据表,而SerialNumber是该表中的一个唯一字段,也就是文件编号 SqlDataReader drx = sqlx.ExecuteReader(strfacx);//代码中的数据表和字段,可以根据自己的实际情况而修改的哦 drx.Read(); if (drx.HasRows) { drx.Dispose(); sqlx.SqlClose(); string ser = string.Empty; SqlHelp sqly = new SqlHelp(); string strfacy = "select top 1 * from tLabelConfirm where SerialNumber like '%" + prefixdate + "%' order by LabelID desc"; SqlDataReader dry = sqly.ExecuteReader(strfacy); dry.Read(); if (dry.HasRows) { ser = dry["SerialNumber"].ToString(); } dry.Dispose(); sqly.SqlClose(); string suf = ser.Substring(ser.IndexOf("-") + 1); int suffix = Convert.ToInt32(suf) + 1; serialnum = prefixdate + "-" + suffix.ToString(); } else { drx.Dispose(); sqlx.SqlClose(); serialnum = prefixdate + "-" + "1"; } return serialnum; }