2013-05-30 76 views
0

數據庫中有一個PilotID字段,其​​起始於1並且可以上升到9999。現在他們想讓我再添加兩個試點類型。 一個身份證號碼從10,000開始,另一個開始於20,000ID範圍和遞增

他們都需要分享PilotID字段。我的問題是,一旦我創建了ID最高的飛行員,當我試圖創建一個新的飛行員時,它只是想增加數據庫中最高的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(); 
+0

這是用於MS SQL Server嗎?有什麼特定於C#4.0的東西嗎? –

+0

是的,這是正確的。沒有具體的。我試圖找出如何找到每個案例的最高數字,然後從那裏增加正確的類型,具體取決於會話中的providerId。 –

+0

你的一般問題是如何創建一個在給定範圍內的ID? –

回答

1

如何簡單地向數據庫詢問當前案例的最高數量,然後用1遞增該結果?

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

感謝您的回覆!我認爲你的想法將工作@souplex –

+0

那麼沒有工作。還有什麼想法? –

+0

假設你在控制自己創建唯一的id值而不使用自動遞增值,我沒有看到任何問題。 Pleun的答案是針對您的問題的更強大的解決方案如果這不適合您,我建議您探索該解決方案。 – souplex