cl.Open();
    //    //创建SelectCommand对象,并为其指定命令类型为存储过程
        SqlCommand comup = new SqlCommand("updata", cl.con);
        comup.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter da = new SqlDataAdapter();
        SqlCommandBuilder cmb = new SqlCommandBuilder(da);    //    //创建一个DataAdapter对象,设定SelectCommand属性为SelectCommand的对象com
       
        da.SelectCommand = comup;
//设置更新条件
        da.UpdateCommand = new SqlCommand("UPDATE infor SET name=@name,sex=@sex,age=@age,department=@department,job=@job WHERE id = @id",cl.con);
       
    //    //为SqlCommand 添加必要的参数
        SqlParameter uppar = da.UpdateCommand.Parameters.Add("@name", SqlDbType.VarChar, 50, "name");
        uppar.Value = this.tb_name.Text;
        uppar = da.UpdateCommand.Parameters.Add("@id",SqlDbType.Int,4,"id");
        uppar.Value = this.tb_id.Text;
        uppar = da.UpdateCommand.Parameters.Add("@sex",SqlDbType.Char,10,"sex");
        uppar.Value = this.tb_sex.Text;
        uppar = da.UpdateCommand.Parameters.Add("@age",SqlDbType.Int,4,"age");
        uppar.Value = this.tb_age.Text;
        uppar = da.UpdateCommand.Parameters.Add("@partement",SqlDbType.VarChar,50,"department");
        uppar.Value = this.tb_department.Text;
        uppar = da.UpdateCommand.Parameters.Add("@job",SqlDbType.VarChar,50,"job");
        uppar.Value = this.tb_job.Text;        uppar.SourceVersion = DataRowVersion.Original;
        DataSet ds = new DataSet();
        da.Fill(ds,"infor");  //这出的问题,过程或函数 'updata' 需要参数 '@id',但未提供该参数。   
        DataRow dr = ds.Tables["infor"].Rows[0];
        da.Update(ds.Tables["infor"]);
        cl.Close();

解决方案 »

  1.   

    uppar这个变量要定义为数组
    看我的代码:
    加个SqlParameter [] spm=new SqlParameter[12];
    spm[0]=new SqlParameter("@CategoryName",SqlDbType.VarChar);
    spm[0].Value =voshanguserinfo.SHOPNAME;i=this.ExecProc1("传存储过程的名字",spm);
    return i;
    调用
    public DataSet ExecProc1(string procName,SqlParameter [] sp)//执行查询的存储过程
    {
    SqlConnection sc=this.getSqlConnection();
    sc.Open();
    SqlCommand sm=sc.CreateCommand();
    //sm.Connection=sc;
    sm.CommandText=procName;
    sm.CommandType=CommandType.StoredProcedure;foreach(SqlParameter s in sp)
    {
    sm.Parameters.Add(s);
    }
    SqlDataAdapter sda=new SqlDataAdapter();
    sda.SelectCommand=sm;
    DataSet ds=new DataSet();
    sda.Fill(ds);
    int i=ds.Tables[0].Rows.Count;
    sc.Close();
    return ds;
    }