使用相同的参数在{C#中执行多个SQL Server存储过程

时间:2018-04-17 16:10:23

标签: c# .net visual-studio stored-procedures sql-server-2014

想知道我是否在同一个使用块中执行多个存储过程,将参数传递给每个存储过程,还是需要为每个存储过程显式添加相同的参数。

using (sqlConnection)
{
    SQLCommand cmd = new SQLCommand("sproc1", sqlConnection)
    cmd.CommandType = CommandType.StoredProcedure;

    //adding parameters for the first SQL query
    cmd.Parameters.Add(new SQLParameter("@ID", id));
    cmd.Parameters.Add(new SQLParameter("@Sport", sportId));
    cmd.Parameters.Add(new SQLParameter("@Player", playerId));
    cmd.ExecuteNonQuery();

    cmd.CommandText = "sproc2";
    cmd.CommandType = CommandType.StoredProcedure;
    //Will parameters from above be passed in this stored procedure, or will they need to be added again?
    cmd.ExecuteNonQuery();
};

1 个答案:

答案 0 :(得分:2)

是。但是出于三个维护原因我不会这样做:

  1. 这是不正常的(至少我从未见过这个),所以这些代码可能会被其他开发者或未来的你误读。

  2. 如果仅重用某些参数但不是全部参数,则最终会为每个存储过程添加新的Add()。然后,当您阅读代码时,很难跟踪,哪些确切的参数用于任何给定的存储过程。

  3. 不同的存储过程调用不再是模块化的。每个都依赖于之前添加到SQLCommand

  4. 中的参数的内容

    如果你确实发现自己在不同的存储过程调用之间重用了一组变量,那么我只想创建一个方法,将这些变量添加到SQLCommand并返回SQLCommand,然后调用每个存储过程的方法。

    是的,这是一个额外的处理时间,但它会使您的代码更易于维护。