向执行过程添加新参数

时间:2018-08-07 20:44:57

标签: c# sql-server

我有一个自定义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?我在那里有点困惑

1 个答案:

答案 0 :(得分:0)

在C#中,您可以使用'params'关键字提供可选参数,因此您只需重写方法并提供params参数。