更新存储过程执行但数据库未更新

Update StoredProcedure executes but DB not updated

我搜索了一段时间并尝试了所有不同的解决方案,但我似乎无法更新数据库。

我已经通过 SSMS 自行执行了存储过程,它工作正常。

这是我的 asp 设置:

<asp:SqlDataSource ID="SqlDataSource5" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" UpdateCommand="spProofStamp" UpdateCommandType="StoredProcedure">
    <UpdateParameters>
        <asp:Parameter Name="sID" Type="String" />
        <asp:Parameter Name="UserID" Type="String" />
    </UpdateParameters>
</asp:SqlDataSource>

按钮:

<dx:LayoutItem Caption="">
    <LayoutItemNestedControlCollection>
        <dx:LayoutItemNestedControlContainer ID="LayoutItemNestedControlContainer1" runat="server">
            <dx:ASPxButton ID="ASPxFormLayout2_E2" OnClick="Button1_Click" runat="server" Text="Validate" AutoPostBack="false">
                <ClientSideEvents Click="function(s,e){validate();}" />

            </dx:ASPxButton>
        </dx:LayoutItemNestedControlContainer>
    </LayoutItemNestedControlCollection>
</dx:LayoutItem>

我的代码隐藏(我也尝试过分别进行数据绑定和更新)。

我还跟踪了这些值,它们都在那里,我如何判断 Update/DataBind 是否有效?我代码中的其他数据绑定工作正常:

protected void Button1_Click(object sender, EventArgs e)
{
    SqlDataSource5.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure;
    SqlDataSource5.UpdateCommand = "spProofStamp";
    SqlDataSource5.UpdateParameters["sID"].DefaultValue = selectedValue;
    SqlDataSource5.UpdateParameters["UserID"].DefaultValue = login.ToUpper();
    SqlDataSource5.Update();
    SqlDataSource5.DataBind();
}

存储过程:

ALTER PROCEDURE [dbo].[spProofStamp]
@UserID nvarchar(15),
@sID nvarchar(15)
AS
SET NOCOUNT ON
UPDATE [dbo].[ORDER]

SET [USERID] = @UserID,
    [DATE] = CURRENT_TIMESTAMP

WHERE ID = @sID

我建议您将方法从 sqldatasource 更改为 code behind,因为它使您的代码更清晰,更有效。

您可以使用下一个方法:

protected void UpdateDB(string user_id, string sid){
    SqlConnection con = new SqlConnection(your_connection_string);
    SqlCommand cmd = new SqlCommand("spProofStamp", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@USERID", SqlDbType.NVarChar).Value = user_id;
    cmd.Parameters.Add("@SID", SqlDbType.NVarChar).Value = sid;

    try{
        con.Open();
        cmd.ExecuteNonQuery();
    }
    catch(Exception ex){
        //process your exception
    }
    finally{
        con.Close();
        Response.Redirect(Request.Url.AbsoluteUri); //refresh this page
    }
}

并调用您的方法:

UpdateDB(login.ToUpper(), selectedValue);