C#运行过程而不指定参数名称

m0g*_*m0g 7 c# sql-server asp.net stored-procedures parameter-passing

如何执行一个接收参数的存储过程而不必指定参数名称?存储过程中的参数名称可能会从CustomerID更改为CustID,因此我不想继续更改我的代码.

而不是执行下面提供的指定参数名称的内容 -

command.Parameters.Add("@dtStart", SqlDbType.DateTime);
command.Parameters["@dtStart"].Value = startDate;
command.Parameters.Add("@CustomerID", SqlDbType.NChar);
command.Parameters["@CustomerID"].Value = customerID;
Run Code Online (Sandbox Code Playgroud)

我希望做这样的事情 -

command.Parameters.Add(startDate, customerID);
Run Code Online (Sandbox Code Playgroud)

Hen*_*man 16

存储过程中的参数名称可能会从CustomerID更改为CustID

扯掉那样做的人.

参数名称是识别参数的可靠方法.另一种选择是序列,看起来更加片状.


Tom*_*cek 5

我不认为你可以创建一个SqlParameter对象而不指定它的名字.但是,您应该能够使用该DeriveParameters方法(请参阅MSDN)获取参数集合,其中的名称将自动从SQL Server中检索.

你可以在这里找到一个例子.看起来大致如下:

SqlCommand command = // create a command for calling the stored procedure
SqlCommandBuilder.DeriveParameters(command);

// Now you can set values of parameters in a loop
for(int i = 0; i < command.Parameters.Length; i++) {
  var parameter = command.Parameters[i]
  // Set value of ith parameter
}
Run Code Online (Sandbox Code Playgroud)