2016-12-07 17 views
-3

私は以下の解決方法を使用しましたが、特定の行を削除するときにはその番号が複製されます。データベースからの番号を自動生成するC#

コード:

void AutoGenerateId() 
{ 
    SqlConnection cn = new SqlConnection(ConString); 
    string Query = "select COUNT(*) from StudentDetails"; 
    SqlCommand cd = new SqlCommand(Query, cn); 
    try 
    { 
     cn.Open(); 
     int count = Convert.ToInt16(cd.ExecuteScalar()) + 1; 
     txtStudentId.Text = count.ToString(); 
     txtStudentId.Enabled = false; 
    } 
    catch (Exception ex) 
    { 
     lblErrorMsg.Text = ex.ToString(); 
    } 
    finally 
    { 
     cn.Close(); 
    } 
} 
+1

私はあなたが求めていることを少しでも手掛かりにしていません... – Siyual

+0

私はあなたが尋ねているものを得る、ちょっと。 (潜在的な)次のインクリメント値を取得しようとしているなら、カウントではなくSELECT IDENT_CURRENT(StudentDetails)+ 1を使用してください。あなたがコミットする前に変更する可能性があるので、私は可能性を言います。 ID列も必要です。IDENTITYでない場合はMAX(Id)を使用してください。 –

+2

または単にIDを使用するINT INT IDENTITY(1,1) – Steve

答えて

3

あなたがIDを生成し、次のいずれかを取得するためにsequencerを使用することができます。

例:あなたが行を削除しても

string query = "SELECT NEXT VALUE FOR Student.Sequence;" 

これは、一意の番号を返します。

+0

無効なオブジェクト名 'Std_Info.Id' – WeeZy

関連する問題