我有一个自定义SQL exec
,用于执行存储过程并发送数据表并在sql中执行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
?我在那里有点困惑
答案 0 :(得分:0)
在C#中,您可以使用'params'关键字提供可选参数,因此您只需重写方法并提供params参数。