Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp.net的过程或函数中设置参数错误_C#_Sql Server_Stored Procedures_Ado.net - Fatal编程技术网

C# 如何在asp.net的过程或函数中设置参数错误

C# 如何在asp.net的过程或函数中设置参数错误,c#,sql-server,stored-procedures,ado.net,C#,Sql Server,Stored Procedures,Ado.net,因此,我在这里创建一个使用sql server数据库连接的web应用程序,这里有一个存储过程: ALTER PROC [dbo].[spMSTransaction_Insert] @OrgID int, @SiteID int, @TransactionCategoryID int, @TransactionDesc varchar(300), @IsActive bit, @CreatedDate datetime, @CreatedB

因此,我在这里创建一个使用sql server数据库连接的web应用程序,这里有一个存储过程:

ALTER PROC [dbo].[spMSTransaction_Insert] 
    @OrgID int,
    @SiteID int,
    @TransactionCategoryID int,
    @TransactionDesc varchar(300),
    @IsActive bit,
    @CreatedDate datetime,
    @CreatedBy varchar(50),
    @ModifiedDate datetime,
    @ModifiedBy varchar(50)
AS

SET NOCOUNT ON 
SET XACT_ABORT ON  

BEGIN TRAN

INSERT INTO [dbo].[MSTransaction] 
(
    [OrgID], 
    [SiteID], 
    [TransactionCategoryID], 
    [TransactionDesc], 
    [IsActive], 
    [CreatedDate], 
    [CreatedBy], 
    [ModifiedDate], 
    [ModifiedBy]
)
SELECT  @OrgID, 
        @SiteID, 
        @TransactionCategoryID, 
        @TransactionDesc, 
        @IsActive, 
        @CreatedDate, 
        @CreatedBy, 
        @ModifiedDate, 
        @ModifiedBy

COMMIT
在后面的代码中,我有这样一个:

protected void btnSave_Click(object sender, EventArgs e)
{
    logID = Helper.GetLogID();
    try
    {
        LKLog.Write(logID, "Transaction.aspx.cs", "btnSave_Click", "Start Method", string.Empty, Helper.GetUserName());
        orgID = 1;
        siteID = 1;

        if (string.IsNullOrEmpty(hfOrgID.Value))
        {
            clsTransaction.InsertTransaction(Helper.LogID, Helper.OrgID, Helper.SiteID, 
                CommonFunctions.StringToInt(ddlTransactionCategory.SelectedValue), txtTransactionDesc.Text, true);
        }
        else
        {
            int transactionID = CommonFunctions.StringToInt(hfOrgID.Value);
            clsTransaction.UpdateTransaction(logID, orgID, siteID, 1,
                CommonFunctions.StringToInt(ddlTransactionCategory.SelectedValue), txtTransactionDesc.Text, true);
        }

        string message = string.Format(Constants.SaveMessage, "Transaction");
        LKLog.Write(logID, "Transaction.aspx.cs", "btnSave_Click", "End Method", string.Empty, Helper.GetUserName());
        ScriptManager.RegisterStartupScript(this, this.GetType(), "Info", "alert('" + message + "');window.location ='Transaction.aspx';", true);
    }
    catch (Exception ex)
    {
        LKLog.Write(logID, "Transaction.aspx.cs", "btnSave_Click", ex.StackTrace, ex.Message, Helper.GetUserName());
        throw;
    }
}
课程安排如下:

public static void InsertTransaction(decimal logID, int orgID, int siteID, int TransactionCategoryID, string TransactionDesc, bool isActive)
{
    LKLog.Write(logID, "clsTransaction.cs", "InsertTransaction", "Start Method", string.Empty, Helper.GetUserName());
    using (SqlConnection conn = new SqlConnection(CommonFunctions.GetAppDBConnection(Constants.AppID, Constants.TMDDBConnection)))
    {
        try
        {
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "spMSTransaction_Insert";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("orgID", orgID));
            cmd.Parameters.Add(new SqlParameter("siteID", siteID));
            cmd.Parameters.Add(new SqlParameter("TransactionCategoryID", TransactionCategoryID));
            cmd.Parameters.Add(new SqlParameter("TransactionDesc", TransactionDesc));
            cmd.Parameters.Add(new SqlParameter("IsActive", siteID));
            cmd.Parameters.Add(new SqlParameter("Username", Helper.GetUserName()));
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            LKLog.Write(logID, "clsTransaction.cs", "InsertTransaction", ex.StackTrace, ex.Message, Helper.GetUserName());
            throw;
        }
        finally
        {
            conn.Close();
        }
    }
    LKLog.Write(logID, "clsTransaction.cs", "InsertTransaction", "End Method", string.Empty, Helper.GetUserName());
}
但当我试图插入数据时,错误指向

过程或函数“spMSTransaction_Insert”需要未提供的参数“@CreatedDate”

错误行为(第73行标记为红色):


我很困惑,到底是什么错误,有没有关于我这里缺少什么的建议?

错误消息告诉您缺少存储过程的一个参数,具体来说
@CreatedDate

您需要添加:

cmd.Parameters.Add(new SqlParameter("CreatedDate", DateTime.Now));

注意:您必须提供丢失的所有其他参数,否则将遇到相同的错误

异常文本非常清楚:

过程或函数“spMSTransaction\u Insert”需要参数“@CreatedDate”,该参数未提供

存储过程需要这些您没有提供的参数

@CreatedDate datetime,
@CreatedBy varchar(50),
@ModifiedDate datetime,
@ModifiedBy varchar(50)
…您正在传递一个它不期望的参数

cmd.Parameters.Add(new SqlParameter("Username", Helper.GetUserName()));

问题就在于错误到底说了什么。必须向cmd提供所有程序参数。+1。你说的正是它缺少的东西。:)我希望我能给你们两个答案,但既然@DarrenDavies先回答了,我就投他的票,谢谢sir@kostasch-是的,但是我要从错误消息的状态开始。希望这将引导他们朝着正确的方向前进,这样他就可以自己提供其他论点。你说得对:)。但是@AdamMaras的答案完全解决了问题。因此,我认为必须比你的答案:)更多,这是绝对正确的。我希望我能给你们两个答案,但既然@DarrenDavies先回答了,我就投你一票,先生
cmd.Parameters.Add(new SqlParameter("Username", Helper.GetUserName()));