理想的には、テーブル定義を変更して TagID を ID フィールドにするだけです。それができない場合、次善の策は次のとおりです。
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 を与える特殊なケースを処理します。
編集:
元の質問への変更に基づいて、テーブルには既に ID 列があるため、ストアド プロシージャは次のようになります。
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); //これは消えるはずなので、自動インクリメント.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", 値); cmd.Parameters.AddWithValue("@TagCount", TagCount); cmd.ExecuteNonQuery(); }コード> プレ>