Ajout d'un identifiant unique au formulaire ac # à insert dans une database mssql

J'essaie de lier mon formulaire c # à une database qui peut contenir toutes datatables insérées dans le formulaire.

les quatre autres champs sont insérés dans la database correctement.

le problème que j'ai est que chaque fois qu'un nouvel logging est créé, un identifiant unique doit être généré dans le dernier champ de la table SQL.

La seule façon de le faire est d'utiliser un guid. Mais le problème est que j'ai besoin de l'identifiant pour commencer à partir de 1 et incrémenter.

Je ne suis pas sûr de savoir comment faire cela en C # donc toute aide fournie serait excellente.

Voici mon code

protected void Unnamed1_Click(object sender, EventArgs e) { ssortingng box1value = TextBox1.Text; ssortingng box2value = TextBox2.Text; ssortingng box3value = TextBox3.Text; SqlConnection myConnection = new SqlConnection(sConnection); ssortingng sql = "INSERT INTO Part1Table (CustomerDetails, TechnologyPartner, ResponseDate, FormID, RowID) VALUES (@CustomerDetails, @TechnologyPartner, @ResponseDate, @FormID, @RowID)"; myConnection.Open(); try { // create a db command object using the sql and db connection SqlCommand cmdIns = new SqlCommand(sql, myConnection); //box1value cmdIns.Parameters.Add("@CustomerDetails", SqlDbType.Char); cmdIns.Parameters["@CustomerDetails"].Value = box1value; //box2value cmdIns.Parameters.Add("@TechnologyPartner", SqlDbType.Char); cmdIns.Parameters["@TechnologyPartner"].Value = box2value; //box3value cmdIns.Parameters.Add("@ResponseDate", SqlDbType.DateTime); cmdIns.Parameters["@ResponseDate"].Value = box3value; cmdIns.Parameters.Add("@FormID", SqlDbType.Int); cmdIns.Parameters["@FormID"].Value = 1; cmdIns.Parameters.Add("@RowID", SqlDbType.UniqueIdentifier); cmdIns.Parameters["@RowID"].Value = Guid.NewGuid(); // run the query cmdIns.ExecuteNonQuery(); // end the command object cmdIns.Dispose(); cmdIns = null; } catch(Exception ex) { Response.Write(ex); } myConnection.Close(); 

Vous searchz une COLONNE D'IDENTITÉ

Par exemple

 CREATE TABLE [dbo].[Part1Table]( [CustomerDetail] [nvarchar](50) NULL, .... [RowID] [int] IDENTITY(1,1) NOT NULL CONSTRAINT [PK_City] PRIMARY KEY CLUSTERED ( [RowID] ASC )ON [PRIMARY] 

Si vous avez une colonne d'identité, le travail pour append une valeur d'incrément à chaque nouvel logging est transmis au moteur de database.

Bien sûr, vous ne pouvez pas passer une valeur vous-même pour cette colonne, mais vous lisez la valeur atsortingbuée par la database à l'aide de la command SCOPE_IDENTITY

  SELECT SCOPE_IDENTITY() 

Donc, en résumant vous pourriez écrire

 ssortingng sql = @"INSERT INTO Part1Table (CustomerDetails, TechnologyPartner, ResponseDate, FormID) VALUES (@CustomerDetails, @TechnologyPartner, @ResponseDate, @FormID)"; using(SqlConnection myConnection = new SqlConnection(sConnection)) SqlCommand cmdIns = new SqlCommand(sql, myConnection); { try { myConnection.Open(); cmdIns.Parameters.Add("@CustomerDetails", SqlDbType.Char); cmdIns.Parameters["@CustomerDetails"].Value = box1value; //box2value cmdIns.Parameters.Add("@TechnologyPartner", SqlDbType.Char); cmdIns.Parameters["@TechnologyPartner"].Value = box2value; //box3value cmdIns.Parameters.Add("@ResponseDate", SqlDbType.DateTime); cmdIns.Parameters["@ResponseDate"].Value = box3value; cmdIns.Parameters.Add("@FormID", SqlDbType.Int); cmdIns.Parameters["@FormID"].Value = 1; // No parameter for the ROWID column. // It will be an error to try to insert // a value for that column cmdIns.ExecuteNonQuery(); // Read back the value using the SAME connection used for the insert cmdIns.Parameters.Clear(); cmdIns.CommandText = "SELECT SCOPE_IDENTITY()"; object result = cmdIns.ExecuteScalar(); int newRowID = Convert.ToInt32(result); } }