В идеалния случай просто бихте направили TagID поле за идентичност, като промените дефиницията на таблицата. Ако не можете да направите това, следващият най-добър би бил:
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
Транзакцията гарантира, че няма да се окажете с уникални TagIDs и коалесцията обработва специалния случай, когато таблицата е празна и дава първоначална стойност 1.
РЕДАКТИРАНЕ:
Въз основа на промяната на вашия първоначален въпрос, таблицата вече има колона за идентичност, така че вашата съхранена процедура трябва да бъде:
CREATE PROCEDURE [dbo].[InsertTagProcdure]
@Value nvarchar(200),
@TagCount nvarchar(200)
AS
BEGIN
INSERT INTO Tag (Value,TagCount) VALUES (@Value,@TagCount)
END
и вашият C# код трябва да бъде
int TagID =int.Parse(txtTagID.Text); //Това трябва да отпадне, така че автоматично се увеличава.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();
}