使用相同的参数在C#中执行多个SQL Server存储过程
想知道我是否在同一个using块中执行多个存储过程,参数是否会传递给每个存储过程,或者我是否需要显式地将相同的参数添加到每个存储过程中使用相同的参数在C#中执行多个SQL Server存储过程,c#,.net,visual-studio,stored-procedures,sql-server-2014,C#,.net,Visual Studio,Stored Procedures,Sql Server 2014,想知道我是否在同一个using块中执行多个存储过程,参数是否会传递给每个存储过程,或者我是否需要显式地将相同的参数添加到每个存储过程中 using (sqlConnection) { SQLCommand cmd = new SQLCommand("sproc1", sqlConnection) cmd.CommandType = CommandType.StoredProcedure; //adding parameters for the first SQL que
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();
};
对。但是,出于三个维护原因,我不会这样做:
Add()
s。在阅读代码时,很难跟踪任何给定存储过程使用的确切参数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();
};
SQLCommand
中的参数SQLCommand
并返回SQLCommand
,然后为每个存储过程调用该方法
是的,这只需要很少的额外处理时间,但它会使代码更易于维护。是的。但是,出于三个维护原因,我不会这样做:
Add()
s。在阅读代码时,很难跟踪任何给定存储过程使用的确切参数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();
};
SQLCommand
中的参数SQLCommand
并返回SQLCommand
,然后为每个存储过程调用该方法
是的,这只需要很少的额外处理时间,但它会使您的代码更易于维护。是什么阻止了您自己尝试它?这会起作用,但不会。维护噩梦/糟糕的做法。参数和其他
SqlCommand
状态在Execute…
调用之间被保留。@dlatikay重用SqlCommand
实例本身并不是一个糟糕的做法。感谢大家对它的理解和对实践的看法,但我相信@levinja已经回答了我的问题彻底地提问。是什么阻止了你自己去尝试呢?那会管用的,但不要。维护噩梦/糟糕的做法。参数和其他SqlCommand
状态在Execute…
调用之间被保留。@dlatikay重用SqlCommand
实例本身并不是一个糟糕的做法。感谢大家对它的理解和对实践的看法,但我相信@levinja已经回答了我的问题彻底提问。感谢您对此@Levinja的回复,因为我只考虑我自己使用它,而不是我后面的后续人员的最佳实践。要回答您关于多个存储过程中相同参数的问题,是的,每个存储过程都包含相同的参数,因此我可能会考虑创建一个方法来为我处理这些参数。感谢您对@Levinija的回复,因为我只是考虑我使用它,而不是我后面的后续人员的最佳实践。要回答您关于多个存储过程中相同参数的问题,是的,每个存储过程都包含相同的参数,因此我可能会考虑创建一个方法来处理这些参数。