我只是想知道是否有辦法執行存儲過程而無需命名參數。這意味着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