我有一个自定义的SQL exec来执行存储过程,并在sql中发送DataTable和执行TableType,如下所示:
//Execute
db.ExeSQLParam("usp_TaskStatus_Time_Calculation_Final", parameters, "@GuidIdTableType");ExeSQLParam方法:
public bool ExeSQLParam(string SprocName, DataTable paramArray, string tableTypeName)
{
var testc = new SqlParameter();
bool bFlag = false;
SqlCommand cmd = new SqlCommand(SprocName, this.dbconn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter(tableTypeName, SqlDbType.Structured));
cmd.Parameters[tableTypeName].Value = paramArray;
try
{
cmd.ExecuteNonQuery();
bFlag = true;
}
catch (SqlException e)
{
this.HandleSQLError(e, SprocName, paramArray.ToString());
}
finally
{
cmd.Dispose();
}
return bFlag;
}我的问题是如何向此方法添加另一个常规参数,以便我可以执行如下代码:
db.ExeSQLParam("usp_TaskStatus_Time_Calculation_Final", parameters, "@GuidIdTableType",
@anoteherParameter = 'valueanotherparameter', @other = 'valueoter');我怎样才能做到这一点呢?
我尝试将其更改为DataTable格式的接收输出数据,如下所示:
public DataTable ExeSQLParamAndType(string SprocName, DataTable paramArray, string tableTypeName)
{
SqlCommand cmd = new SqlCommand(SprocName, this.dbconn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter(tableTypeName, SqlDbType.Structured));
cmd.Parameters[tableTypeName].Value = paramArray;
DataTable tbl = new DataTable("Table1")
{
Locale = System.Globalization.CultureInfo.InvariantCulture
};
SqlDataAdapter da = new SqlDataAdapter(cmd);
try
{
da.Fill(tbl);
}
catch (SqlException e)
{
this.HandleSQLError(e, "GetTableBySQL", SprocName);
}
finally
{
cmd.Dispose();
}
return tbl;
}但是我可以在哪里添加新参数呢?和另一个parameters.Add?我有点困惑
发布于 2018-08-08 05:10:52
在C#中,您可以使用' params‘关键字提供可选参数,因此您只需重写方法并提供params参数即可。
https://stackoverflow.com/questions/51735146
复制相似问题