Idéalement, vous feriez simplement de TagID un champ d'identité en modifiant la définition de la table. Si vous ne pouvez pas le faire, le mieux serait :
CREATE PROCEDURE [dbo].[InsertTagProcdure]
@Value nvarchar(200),
@TagCount nvarchar(200)
AS
BEGIN
BEGIN TRANSACTION
DECLARE @TagID int;
SELECT @TagID = coalesce((select max(TagID) + 1 from Tag), 1)
COMMIT
INSERT INTO
Tag
(TagID,Value,TagCount)
VALUES
(@TagID,@Value,@TagCount)
END
La transaction garantit que vous ne vous retrouvez pas avec des TagID uniques et la fusion gère le cas particulier où la table est vide et donne une valeur initiale de 1.
MODIF :
En fonction de la modification apportée à votre question d'origine, la table comporte déjà une colonne d'identité. Votre procédure stockée doit donc être :
CREATE PROCEDURE [dbo].[InsertTagProcdure]
@Value nvarchar(200),
@TagCount nvarchar(200)
AS
BEGIN
INSERT INTO Tag (Value,TagCount) VALUES (@Value,@TagCount)
END
et votre code C# devrait être
int TagID =int.Parse(txtTagID.Text); //Ceci devrait disparaître, donc incrémentation automatique.String Value =txtValue.Text;int TagCount =int.Parse(txtCount.Text);
using (var conn = new SqlConnection(Properties.Settings.Default.DBConnectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "InsertTagProcdure";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Value", Value);
cmd.Parameters.AddWithValue("@TagCount", TagCount);
cmd.ExecuteNonQuery();
}