在C#中对数据,添加修改,用存储过程怎么实现的,我不太懂
比如像下面的代码,我一点不懂
 public string AddStuInfo(string stuid, string stuname, string stusex, string studay, string studepart, string stuclass, string stuidcard, string stuaddr, string stutel, string stuextfield)
        {
            SqlParameter[] parameters={
                             new SqlParameter("@Id",SqlDbType.Int,4),
            new SqlParameter("@StudentID",SqlDbType.NVarChar,50),
            new SqlParameter("@StudentName",SqlDbType.NVarChar,50),
            new SqlParameter("@StudentSex",SqlDbType.NVarChar,50),
            new SqlParameter("@StudentDate",SqlDbType.NVarChar,50),
            new SqlParameter("@DepartName",SqlDbType.NVarChar,50),
            new SqlParameter("@ClassName",SqlDbType.NVarChar,50),
            new SqlParameter("@StudentIDCard",SqlDbType.NVarChar,50),
            new SqlParameter("@Address",SqlDbType.NVarChar,50),
            new SqlParameter("@StudentTel",SqlDbType.NVarChar,50),
            new SqlParameter("@ExtendField",SqlDbType.NVarChar,50)};
            parameters[0].Direction=ParameterDirection.Output;
            parameters[1].Value=stuid;
            parameters[2].Value=stuname;
            parameters[3].Value=stusex;
            parameters[4].Value=studay;
            parameters[5].Value=studepart;
            parameters[6].Value=stuclass;
            parameters[7].Value=stuidcard;
            parameters[8].Value=stuaddr;
            parameters[9].Value=stutel;
            parameters[10].Value=stuextfield;
            return DBHelper.ExecuteCommand("StudentInfoADD",parameters).ToString();
                                      
        }
         public static int ExecuteCommand(string stor, SqlParameter[] paras)
       {
           SqlCommand cmd = new SqlCommand(stor, Connection);
           cmd.CommandType = CommandType.StoredProcedure;
           foreach (SqlParameter para in paras)
           {
               if (para != null)
               {
                   if ((para.Direction == ParameterDirection.InputOutput || para.Direction == ParameterDirection.Input) && (para.Value == null))
                   {
                       para.Value = DBNull.Value;
                   }
                   cmd.Parameters.Add(para);
               }
           }
           return cmd.ExecuteNonQuery();
       }

解决方案 »

  1.   


    public string AddStuInfo(string stuid, string stuname, string stusex, string studay, string studepart, string stuclass, string stuidcard, string stuaddr, string stutel, string stuextfield)
      {
      SqlParameter[] parameters={
      new SqlParameter("@Id",SqlDbType.Int,4),
      new SqlParameter("@StudentID",SqlDbType.NVarChar,50),
      new SqlParameter("@StudentName",SqlDbType.NVarChar,50),
      new SqlParameter("@StudentSex",SqlDbType.NVarChar,50),
      new SqlParameter("@StudentDate",SqlDbType.NVarChar,50),
      new SqlParameter("@DepartName",SqlDbType.NVarChar,50),
      new SqlParameter("@ClassName",SqlDbType.NVarChar,50),
      new SqlParameter("@StudentIDCard",SqlDbType.NVarChar,50),
      new SqlParameter("@Address",SqlDbType.NVarChar,50),
      new SqlParameter("@StudentTel",SqlDbType.NVarChar,50),
      new SqlParameter("@ExtendField",SqlDbType.NVarChar,50)};//在代码中声明SQL存储过程参数
      parameters[0].Direction=ParameterDirection.Output;
      parameters[1].Value=stuid;
      parameters[2].Value=stuname;
      parameters[3].Value=stusex;
      parameters[4].Value=studay;
      parameters[5].Value=studepart;
      parameters[6].Value=stuclass;
      parameters[7].Value=stuidcard;
      parameters[8].Value=stuaddr;
      parameters[9].Value=stutel;
      parameters[10].Value=stuextfield;//上面的是给存储过程参数赋值
      return DBHelper.ExecuteCommand("StudentInfoADD",parameters).ToString();//执行StudentInfoADD这个存储过程,方法第二个参数是给StudentInfoADD存储过程的参数
        
      }
      public static int ExecuteCommand(string stor, SqlParameter[] paras)
      {
      SqlCommand cmd = new SqlCommand(stor, Connection);
      cmd.CommandType = CommandType.StoredProcedure;//表面Command的类型为存储过程 对应的Text的就是直接执行SQL语句
      foreach (SqlParameter para in paras)
      {
      if (para != null)
      {
      if ((para.Direction == ParameterDirection.InputOutput || para.Direction == ParameterDirection.Input) && (para.Value == null))//如果是输入参数且参数为null,则将参数值设置为DBNull 就是SQL中代码NULL的值
      {
      para.Value = DBNull.Value;
      }
      cmd.Parameters.Add(para);
      }
      }
      return cmd.ExecuteNonQuery();//执行非查询形式的SQL语句 
      }
      

  2.   

    可理解:函数带有多个参数StudentInfoADD(int Id,string StudentID,......)的调用方法
    这些参数必须用SqlParameter类来封装进行传值操作
    然后交给SqlCommand类进行执行操作。