ASP C#|使用SQL和存储过程更新数据库

ASP C#|使用SQL和存储过程更新数据库,c#,sql,stored-procedures,C#,Sql,Stored Procedures,以下是我的OnClick活动: protected void Submit_Click(object sender, EventArgs e) { try { using (SqlConnection con = new SqlConnection(conString)) { using (SqlCommand cmd = new SqlCommand("administratorUpdate", con))

以下是我的OnClick活动:

protected void Submit_Click(object sender, EventArgs e)
{
    try
    {
        using (SqlConnection con = new SqlConnection(conString))
        {
            using (SqlCommand cmd = new SqlCommand("administratorUpdate", con))
            {
                cmd.Parameters.Add("@originalID", SqlDbType.VarChar).Value = IDHF.Value;
                cmd.Parameters.Add("@firstName", SqlDbType.VarChar).Value = firstNameTB.Text;
                cmd.Parameters.Add("@lastName", SqlDbType.VarChar).Value = lastNameTB.Text;
                cmd.Parameters.Add("@userName", SqlDbType.VarChar).Value = userNameTB.Text;
                cmd.Parameters.Add("@emailAddress", SqlDbType.VarChar).Value = emailAddressTB.Text;
                cmd.CommandType = CommandType.StoredProcedure;
            }
        }
        GetAllRPT.DataBind();
        Label ErrorMessageLabel = (Label)Master.FindControl("ErrorMessageLabel");
        new myFunctions().DisplayUserMessage("success", "Administrator Updated!", ErrorMessageLabel);
        AdminForm.Visible = false;
    }
    catch (Exception ex)
    {
        Label ErrorMessageLabel = (Label)Master.FindControl("ErrorMessageLabel");
        new myFunctions().DisplayUserMessage("error", ex.Message, ErrorMessageLabel);
    }
}
这是我的存储过程[administratorUpdate]:

ALTER PROCEDURE [dbo].[administratorUpdate]
    @originalID UNIQUEIDENTIFIER,
    @firstName varchar (100),
    @lastName varchar (100),
    @userName varchar (100),
    @emailAddress varchar (100),
    @password varchar (100),
    @isActive bit
AS

UPDATE administrator
SET userName = @userName,
    emailAddress = @emailAddress,
    password = @password,
    firstName = @firstName,
    lastName = @lastName,
    isActive = @isActive
WHERE
    ID = @originalID

代码执行并执行成功消息,但datatable不更新。谁知道为什么?我不熟悉在ASP中使用存储过程。

您正在执行该命令吗

    using (SqlConnection con = new SqlConnection(conString))
    {
        conn.Open(); //this was missing

        using (SqlCommand cmd = new SqlCommand("administratorUpdate", con))
        {
            cmd.Parameters.Add("@originalID", SqlDbType.VarChar).Value = IDHF.Value;
            cmd.Parameters.Add("@firstName", SqlDbType.VarChar).Value = firstNameTB.Text;
            cmd.Parameters.Add("@lastName", SqlDbType.VarChar).Value = lastNameTB.Text;
            cmd.Parameters.Add("@userName", SqlDbType.VarChar).Value = userNameTB.Text;
            cmd.Parameters.Add("@emailAddress", SqlDbType.VarChar).Value = emailAddressTB.Text;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.ExecuteNonQuery(); //this was missing.
        }

        conn.Close();
    }

这里我的技巧是在调试模式下执行此操作,而不使用Try/Catch。生成的错误将指向问题。

还需要通过执行con.open()打开与数据库的连接;在执行cmd.ExecuteNonQuery()之前@不屑一顾我认为当我使用“使用”时,它是开放的,而数据在该语句中。我可以把数据拉下来,但我想发送数据是不同的?那也是。我已经用正确的实现修改了答案。@Babak我不需要关闭它吗?@Bry4n,是的,你是对的。我的主要观点是你没有执行。@Raj更谢谢你,我不知道如何按照你的命名约定正确地格式化SQL?@Phill你是什么意思?驼峰大小写?'IDHF.Value''firstNameTB.Text''administratorUpdate''ErrorMessageLabel''myFunctions''这一切都非常不一致。txtFirstName、管理员更新、lblErrorMessage、MyFunctions。对我来说最突出的两个是函数类和服务器控件。@Phill-Hmm说得好。我会努力的。谢谢