文字列と DbType を受け取るオーバーロードがあるため、Parameter コンストラクターを呼び出す必要がないことに注意しParamters.Add
てください。現在使用している行を置き換えて、新しいパラメーターを追加できます。
command.Parameters.Add(new SqlParameter("@Firstname", SqlDbType.NVarChar)).Value = TextBox1.Text;
次の短い (ただし機能的には同等の) 行を使用します。
command.Parameters.Add("@Firstname", SqlDbType.NVarChar).Value = TextBox1.Text;
さらにパラメーターを追加する場合は、次のようにコマンドのParametersプロパティに追加するだけです。
SqlCommand command = new SqlCommand("inserting", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Firstname", SqlDbType.NVarChar).Value = TextBox1.Text;
command.Parameters.Add("@Lastname", SqlDbType.NVarChar).Value = TextBox2.Text;
それとは別に、Parameters.AddWithValueを使用してみましたか? これは、列のデータ型が C# の値の型にマップされる場合に使用できます。C# から SQL Server のデータ型へのマッピングについては、こちらを参照してください。
次のように使用します。
// Assume your sproc has a parameter named @Age that is a SqlInt32 type
int age = 5;
// Since age is a C# int (Int32), AddWithValue will automatically set
// the DbType of our new paramter to SqlInt32.
command.Parameters.AddWithValue("@Age", 5);
SqlDbType を指定する必要がある場合、AddWithValue は追加したばかりのパラメーターを返すので、最後に DbTypeプロパティを設定するステートメントを追加するだけで済みますが、この時点では、元の .Add をそのまま使用した方がよいでしょう。機能と値の設定。
command.Parameters.AddWithValue("@Firstname", TextBox1.Text).DbType = SqlDbType.NVarChar;