处理多个不同sql命令的C#方法

处理多个不同sql命令的C#方法,c#,sql,command,C#,Sql,Command,我想知道是否有可能实现一种方法,该方法可以处理多个sql命令,并为这些命令提供不同数量的参数。例如,我有一个存储过程,它将插入表2(userid,address)值(@userid,@address),它接受一个参数@userid。而我有另一个存储过程插入到表1(userid,action,date)值(@userid,@action,@date) 我正在尝试实现一种通用方法,这样我就不需要为每个SQLCommands不断重写代码。我想到的是,我将把参数和控件列表作为参数存储到方法中,方法将按如

我想知道是否有可能实现一种方法,该方法可以处理多个sql命令,并为这些命令提供不同数量的参数。例如,我有一个
存储过程
,它将
插入表2(userid,address)值(@userid,@address)
,它接受一个参数
@userid
。而我有另一个
存储过程
插入到表1(userid,action,date)值(@userid,@action,@date)

我正在尝试实现一种通用方法,这样我就不需要为每个
SQLCommands
不断重写代码。我想到的是,我将把参数和控件列表作为参数存储到方法中,方法将按如下方式处理其余的参数:

private void exeCommand(string cmdText, string[]param, string[]controls)
{
   using(con = new SQLConnection(connectionString))
   {
      using(SQLCommand cmd = con.CreateCommand())
      {
         cmd.CommandText = cmdText;
         cmd.CommandType = System.Data.Type.StoredProcedure;

         foreach(string parameter in param)
         {
            foreach(Control ctrl in controls)
            {
              cmd.Parameters.AddWithValue(parameter, ctrl.Text);
            }
         }

         con.Open();
         cmd.ExecuteNonQuery();
      }
   }

}

这是正确的方法吗?或者有什么解决办法?谢谢

您创建了如下功能: 1.使用此函数添加参数

 public void AddParameters(SqlParameter Field)
{
    Comm.Parameters.Add(Field);
}
  • 使用此函数执行存储过程

         public string Save(string SpName)
                {
    SqlConnection Conn = OpenConnection();  // connection open function you create this funciton
    
    String rv = string.Empty;
    try
    {
        Comm.Connection = Conn;
        Comm.CommandText = SpName;
        Comm.CommandType = CommandType.StoredProcedure;
        Comm.ExecuteNonQuery();
        rv = ("Successfully Saved.");
    }
    catch (Exception ex)
    {
        rv = ("Fails :" + ex.ToString());
    }
    finally
    {
        if (Conn.State != ConnectionState.Closed)
            Conn.Close();
    }
    return rv;
    }
    

  • 签名应为:…EXECOMAND(字符串cmdText、字符串[]参数、控件[]控件)。另外,请指定该参数是一个输入参数,因为您的方法看起来不错。。坚持下去:)“可能”和“明智”是两码事。说到这里,为什么
    参数
    控件
    数组不同?
    param
    中的条目和
    控件的条目(在同一索引?)之间不应该存在1:1的关系吗?如果是这样的话,最好是以某种方式将它们结合起来。可能在
    SqlParameter
    类中。嘿,那已经存在了…——现在使用它的方式是,将
    param
    控件相乘。
    Comm
    从何而来?为什么使用
    try..catch..finally
    而不是
    使用