2013-03-30 2 views
0

Привет, я создал программу, которая считывает последнюю строку таблицы и генерирует номер идентификатора в соответствии с последним сгенерированным номером идентификатора, но все же программа создает дубликат идентификационного номера, который уже находится в таблице. мой код, как: следоватьповторяющийся идентификатор, сгенерированный в идентификаторе, автоматически генерирует код в C#?

private void get_code() 
     { 
       try 
       { 
        con = new OleDbConnection(c.connectionstring); 
        con.Open(); 
        string sql = "select code from bookings"; 
        adp = new OleDbDataAdapter(sql, con); 
        DataSet ds = new DataSet(); 
        adp.Fill(ds, "BOOKINGS"); 
        if (ds.Tables[0].Rows.Count > 0) 
        { 
         int ctr, len; 
         string codeval; 
         DataRow dr; 
         DataTable dt; 
         string code; 
         dt = ds.Tables["bookings"]; 
         len = dt.Rows.Count -1; 
         dr = dt.Rows[len]; 
         code = dr["code"].ToString(); 
         codeval = code.Substring(2, 3); 
         ctr = Convert.ToInt32(codeval); 
         if ((ctr >= 1) && (ctr < 9)) 
         { 
          ctr = ctr + 1; 
          Code.Text= "B-00" + ctr; 
         } 
         else if ((ctr >= 9) && (ctr < 99)) 
         { 
          ctr = ctr + 1; 
          Code.Text = "B-0" + ctr; 
         } 
         else if (ctr >= 99) 
         { 
          ctr = ctr + 1; 
          Code.Text = "B-" + ctr; 
         } 

        } 
       else 
       { 
        Code.Text= "B-001"; 
       } 
       con.Close(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Error Occured : "+ex.Message,"Tailor Master",MessageBoxButtons.OK,MessageBoxIcon.Information); 
      } 
    } 

в следующий сценарий такова: если последний идентификатор был б-005 он снова генерироваться то же самое.

Помогите решить проблему. Заранее спасибо.

Хариш Шарма

+0

Не считая того, что не так с кодом, рассмотрели ли вы, что может произойти, если две копии вашей программы работают в очень похожие моменты? –

ответ

0

Вы не указываете order by пункт в запросе, так что нет никакой гарантии, что последняя строка таблицы данных содержит самый высокий идентификатор. Существует также общая проблема создания идентификаторов в вашем приложении, а не использование правильного поля автоматического увеличения в базе данных.

Смежные вопросы