C# ID范围和递增

C# ID范围和递增,c#,sql-server,C#,Sql Server,数据库中有一个PilotID字段,从1开始,可以上升到9999。现在他们想让我再增加两种飞行员类型。 一个id从10000开始,另一个从20000开始 他们都需要共享PilotID字段。我的问题是,一旦我创建了一个具有最高ID的pilot,当我尝试创建一个新的pilot时,它只想在数据库中增加最高ID。下面是一个例子。如有任何建议,将不胜感激 int newpilotID = 0; int pecID = 10000; int highSeaID = 20000; //checking fo

数据库中有一个
PilotID
字段,从
1
开始,可以上升到
9999
。现在他们想让我再增加两种飞行员类型。 一个id从
10000
开始,另一个从
20000
开始

他们都需要共享
PilotID
字段。我的问题是,一旦我创建了一个具有最高ID的pilot,当我尝试创建一个新的pilot时,它只想在数据库中增加最高ID。下面是一个例子。如有任何建议,将不胜感激

int newpilotID = 0;
int pecID = 10000;
int highSeaID = 20000;

 //checking for PEC provider
if (Session["Role"].ToString().Equals("Provider") && (Session["ProviderID"].ToString().Equals("25")))      
{
    sqlCN.Open();
    qlCOM = new SqlCommand("select f_name from t_Provider where f_Active=1 and f_ProviderID = 25 order by f_name", sqlCN);
    sqlDR = sqlCOM.ExecuteReader();
    Employer.Items.Clear();
    while (sqlDR.Read())
    {
        Employer.Items.Add(sqlDR.GetString(0));
    }
    sqlDR.Close();
    Employer.Items[0].Selected = true;

    sqlCOM = new SqlCommand("select f_PilotID from t_Pilot", sqlCN);
    sqlDR = sqlCOM.ExecuteReader();
    while (sqlDR.Read())
    {
        if (Convert.ToInt32(sqlDR.GetString(0)) > pecID) 
        {
            pecID = Convert.ToInt32(sqlDR.GetString(0));
        }
    }
    sqlDR.Close();

    pecID++;
    PilotID.Text = pecID.ToString();

简单地向数据库查询一个案例的当前最大值,然后将结果增加1,怎么样

select max(id) from mytable where id between 1 and 9999

这是针对MS SQL Server的吗?有什么只针对C#4.0的吗?是的,这是正确的。没什么特别的。我正在尝试找出如何为每个案例找到最大的数字,然后根据会话中的providerId从中递增到正确的类型。您的一般问题是如何创建一个在给定范围内的id?我认为在id中添加语义是个坏主意。假设第一个提供程序提供了10000多个导频?正常情况下,飞行员将获得Id 10000,但该范围已分配给另一个提供商。也许现在这不是问题,但如果该软件在生产中持续使用数年,它会真的咬你。最好在数据库中添加一个试点类型字段,并将ID保留为简单的自动递增谢谢你的回复!我认为您的想法会在@souplex起作用假设您自己控制创建唯一id值,而不使用自动递增值,我看不出有什么问题。Pleun的答案是对你的问题有一个更强有力的解决方案。如果这对你不起作用,我建议你探索这个解决方案。