ストアドプロシージャを使用してデータベースに情報を渡そうとしていますが、そのエラーが発生し続けます。私がテストするとき、私は値を入力しましたが、ダイスはまだありません。誰かがここで間違っていることを私に説明してもらえますか?私はスペルミスやそのすべてをチェックしました。私は何が間違っていたのか分かりません。事前に感謝プロシージャまたは関数 'insert_into'には、パラメータ '@FirstName'が指定されていません。
ストアドプロシージャ:
ALTER PROCEDURE [dbo].[insert_into]
(@FirstName varchar(20),
@LastName varchar(20),
@Email varchar(50),
@caldate1 date,
@caldate2 date,
@id int output)
AS
BEGIN
INSERT INTO customers (FirstName, Lastname, Email, caldate1, caldate2)
VALUES (@FirstName, @LastName, @Email, @caldate1, @caldate2)
SET @id = SCOPE_IDENTITY()
RETURN @id
END
ASPXマークアップ:
<asp:TextBox ID="Firstname" runat="server"></asp:TextBox>
<asp:TextBox ID="Lastname" runat="server"></asp:TextBox>
<asp:TextBox ID="email" runat="server"></asp:TextBox>
<asp:Button ID="btnSubmit" runat="server" Text="go" OnClick="btnSubmit_Click" />
<asp:Label ID="lbloutput" runat="server"></asp:Label>
サーバー側のコード:
protected void btnSubmit_Click(object sender, EventArgs e)
{
string conn = "";
conn = ConfigurationManager.ConnectionStrings["Conn"].ToString();
SqlConnection objsqlconn = new SqlConnection(conn);
try
{
if (Firstname.Text != " ")
{
objsqlconn.Open();
SqlCommand objcmd = new SqlCommand("insert_into", objsqlconn);
SqlParameter id = objcmd.Parameters.Add("@id", SqlDbType.Int);
id.Direction = ParameterDirection.Output;
SqlParameter FirstName = objcmd.Parameters.AddWithValue("@FirstName", SqlDbType.VarChar);
FirstName.Value = Firstname.Text;
SqlParameter LastName = objcmd.Parameters.Add("@LastName", SqlDbType.VarChar);
LastName.Value = Lastname.Text;
SqlParameter Email = objcmd.Parameters.Add("@Email", SqlDbType.VarChar);
Email.Value = email.Text;
SqlParameter caldate1 = objcmd.Parameters.Add("@caldate1", SqlDbType.Date);
DateTime dt = Convert.ToDateTime(startDate.Text, new CultureInfo("en-US"));
caldate1.Value = dt.Date;
SqlParameter caldate2 = objcmd.Parameters.Add("@caldate2", SqlDbType.Date);
DateTime dt2 = Convert.ToDateTime(endDate.Text, new CultureInfo("en-US"));
caldate2.Value = dt2.Date;
objcmd.ExecuteNonQuery();
//Response.Redirect("Default.aspx");
lbloutput.Text = "Record inserted successfully. ID = " + id.Value.ToString();
}
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
objsqlconn.Close();
}
}
私は 'objcmd.CommandType'も' CommandType.StoredProcedure'に設定する必要があると思います。 –
@DanGuzman:はい、絶対に正しい - それも! –
私はちょうどそれを持っていました。しかし、私はそれをテストするために.addwithvalueを変更し、それを元に戻すのを忘れました。それは私に同じエラー@mar_sを与えました。私はコード内のどこにでもその行を持っていません –