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

标签 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))
            {
                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

代码执行并显示成功消息,但数据表未更新。谁知道为什么?我不熟悉在 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();
    }

关于c# - ASP C# |使用 SQL 和存储过程更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4456149/

相关文章:

MySQL 结果由存储过程中的多行组成

sql-server - 从 SQL Server 存储过程执行 Oracle 存储过程

c# - String.Format ("{0:C2}", -1234) (货币格式)将负数视为正数

c# - 当发送者在队列中发送消息时,RabbitMQ Consumer.Received 事件不会在 asp.net Web 应用程序(作为监听器)中触发

sql - 从最好的行中返回随机行(即 : 100 rows -> best 10 -> get 5 random)

php - 在数据库中找不到记录

sql - 案例陈述中的多列

sql - PostgreSQL 中的存储过程和触发器

c# - Task.Delay 会导致线程切换吗?

c# - 如何使用 NHibernate Criteria API 进行多重连接