我只是想知道是否有办法执行存储过程而无需命名参数。这意味着C#按照在存储过程中声明的顺序解析参数。使用无名参数执行存储过程
public static DataTable GetRelatedResources(string StoredProcedure, object[] Parameters)
{
var Results = new DataTable();
try
{
using (SqlConnection conn = new SqlConnection())
{
using (SqlCommand cmd = new SqlCommand(ConfigurationManager.ConnectionStrings["MK3Entities"].ConnectionString))
{
conn.Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = StoredProcedure;
if (Parameters!= null)
{
foreach(var Param in Parameters)
{
// I Want To Do something like this
cmd.Parameters.AddWithValue(Param);
}
}
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(Results);
}
}
}
catch (Exception ex)
{
MMSLogger.Instance.WriteToLog("Exception Executing Stored Procedure:" + ex.Message);
}
return Results;
}
否;但你可以调用'DeriveParameters'来动态加载所需的参数(或者手动创建一个'EXEC'字符串) – 2014-10-28 14:48:51
你的问题听起来像是有什么方法可以在我的脚上拍摄吗?为什么?将参数传递给存储过程时,您知道要传递哪个参数的数据,为什么不把名称与它一起发送? – 2014-10-28 14:52:04
序数参数传递通常不是可取的,并且可能导致很多[像这样的问题](http://stackoverflow.com/a/26547211/314291)。如果你真的必须这样做,那么你可以使用[OleDb](http://stackoverflow.com/q/2407685/314291)而不是'SqlClient' – StuartLC 2014-10-28 14:53:14