using System;
using System.Data;
using System.Data.SqlClient;
namespace GetNextID
{
/// <summary>
/// 从数据库中取编号
/// </summary>
public class GetNextId
{
private const int INCREASE_VALUE = 10;
private string strConn = "server=192.168.10.101;user id=sa;password=123456;data source=WANDER;database=Lx";
private SqlConnection DBConnection;
private static long m_NextID;
private static GetNextId m_GetNextId;
private GetNextId()
{
m_NextID = GetID();
}
public static GetNextId GetInstance()
{
if ( m_GetNextId == null )
m_GetNextId = new GetNextId();
return m_GetNextId;
}
public long Value
{
get
{
lock( this )
{
if ( m_NextID % INCREASE_VALUE == 0 )
m_NextID = GetID();
return ++m_NextID ;
}
}
}
private long GetID()
{
long lngID;
DBConnection = new SqlConnection ( strConn );
DBConnection.Open();
SqlCommand comm = new SqlCommand( "GetNextID", DBConnection );
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.Add( "@ID", SqlDbType.BigInt, 8 );
comm.Parameters[ "@ID" ].Direction = ParameterDirection.Output;
comm.Parameters.Add( "@IncreaseValue", SqlDbType.Int, 4 );
comm.Parameters["@IncreaseValue"].Value = INCREASE_VALUE;
comm.ExecuteNonQuery();
lngID = Convert.ToInt64( comm.Parameters["@ID"].Value );
return lngID;
}
}//class
}//namespace
程序调用:
private GetNextId nextID1 ;
private GetNextId nextID2 ;
private void Form1_Load(object sender, System.EventArgs e)
{
nextID1 = GetNextId.GetInstance();
nextID2 = GetNextId.GetInstance();
}
private void button1_Click(object sender, System.EventArgs e)
{
this.label1.Text = nextID1.Value.ToString() + " " + nextID2.Value.ToString();
}