自從我問這個問題幾個星期過去了,我想我會回答這個問題,因爲我從同事那裏得到了最好的解決方案。您可能想要創建一個新的常見泛型方法,如問題中的泛型方法,但輸出結果爲ParameterDirection
。所以這是我的答案。
public int ExecuteNonQueryWithOutputParamInt(string spName, Dictionary<string, string> parms, Dictionary<string, object> oParam = null)
{
string key = null;
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = spName;
foreach (var para in parms)
{
cmd.Parameters.AddWithValue(para.Key, para.Value);
}
if (oParam != null)
{
foreach (var p in oParam)
{
cmd.Parameters.AddWithValue(p.Key, p.Value).Direction = ParameterDirection.Output;
key = p.Key;
}
}
this.OpenConnection();
cmd.ExecuteNonQuery();
int returnValue = Convert.ToInt32(cmd.Parameters[key].Value);
this.CloseConnection();
return returnValue;
}
catch (Exception ex)
{
ex.Message.ToString();
return 0;
}
}
希望這個幫助別人。感謝您的幫助。
通過使用'ParameterDirection.Output',你可以得到插入的行ID(如果你已經指定了行ID,可以說是主鍵) –