利用Singleton多例模式创建商品自增编号:
如下图片:
代码:
namespace FrmSingleton
{
//生产编号
public class CreateNewCode
{
static Hashtable table = new Hashtable();
//构造方法设为私有.外部类不能实例化此类
private CreateNewCode()
{
}
//规则
private string CodeRole = string.Empty;
public string CoDeRole
{
get { return CodeRole; }
}
//开始自增的字段
private int number=0;
public static CreateNewCode inctext(string px)
{
//实例化一个为null的对象
CreateNewCode newCode = null;
//如果存在则返回
if (table.Contains(px))
{
newCode = (CreateNewCode)table[px];
}
else
{
lock (table)
{
newCode = new CreateNewCode();
newCode.CodeRole = px;
table.Add(px, newCode);
}
}
return newCode;
}
//获取一个新的值
public string GetNewCode()
{
return (string.Format("{0}-{1:0000-0000}", CodeRole, ++number));
}
//获取上一个值
public string LastCode()
{
return (string.Format("{0}-{1:0000-0000}", CodeRole, number));
}
}
}
//这样就实现了根据类型不同产生自增的商品编号.但有一点需要改变.因为这里是存在hashtable当中.在项目中;当应用程序关闭或服务器断电时序列号又从0开始.这个数字就和数据库发生主键重复冲突.解决方法这里就简单很多了.取出数据表最后一个插入的的编号字段
select top 1 Cid from shop order by Cid ordersDate(订单时间) desc 这样取出.再取出格式化后面的值.就可完成