理想情况下,您只需通过更改表定义将TagID用作身份字段。如果您不能这样做,那么下一个最佳选择是:
CREATE PROCEDURE [dbo].[InsertTagProcdure] @Value nvarchar(200), @TagCount nvarchar(200) ASBEGIN 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
事务确保您不会以唯一的TagID结尾,并且合并处理特殊情况,即表为空并给出初始值1。
编辑:
根据对原始问题的更改,该表已经具有一个标识列,因此您的存储过程应为:
CREATE PROCEDURE [dbo].[InsertTagProcdure] @Value nvarchar(200), @TagCount nvarchar(200) ASBEGIN INSERT INTO Tag (Value,TagCount) VALUES (@Value,@TagCount)END
并且您的C#代码应为
int TagID = int.Parse(txtTagID.Text); //这应该会消失,以便自动递增。字符串值= 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(); }


