--更新学生除密码,班级以外的信息
create proc UpdStudentInfo
@stuId int,
@stuName varchar(20),
@stuAddr varchar(200),
@stuPhone varchar(20),
@stuRe varchar(1000),
@stuGender bit,
@stuMail varchar(200),
@stuBirthday datetime
as
  update Student set stuName=@stuName,stuAddr=@stuAddr,
         stuPhone=@stuPhone,stuRe=@stuRe,stuMail=@stuMail,stuBirthday=@stuBirthday
         where stuId=@stuId
exec UpdStudentInfo 5,'000','fdasfsa','fdsaf','fdsfa',1,'fdsafsdf','1989-9-9'这个存储过程在查询分析器调用 完全没错但是在asp.net页面调用时返回值正确,但数据未修改    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection conn = 
            new SqlConnection("server=localhost;database=asp;integrated security=true;");//;integrated security=true;
        SqlCommand comm = new SqlCommand("UpdStudentInfo",conn);
        comm.CommandType = CommandType.StoredProcedure;
        conn.Open();
        SqlParameter para = new SqlParameter("@stuId", SqlDbType.Int);
        para.Value = 3;// int.Parse(Session["stuId"].ToString());
        comm.Parameters.Add(para);
       
        para=new SqlParameter("@stuName",SqlDbType.VarChar,20);
        para.Value = this.stuName.Text.Trim();
        comm.Parameters.Add(para);
        
        para=new SqlParameter("@stuAddr",SqlDbType.VarChar,200);
        para.Value = this.stuAddr.Text.Trim();
        comm.Parameters.Add(para);
        
        para=new SqlParameter("@stuPhone",SqlDbType.VarChar,20);
        para.Value = this.stuPhone.Text.Trim();
        comm.Parameters.Add(para);
        
        para=new SqlParameter("@stuGender",SqlDbType.Bit);
        para.Value =int.Parse(this.stuGender.SelectedValue);
        comm.Parameters.Add(para);        para=new SqlParameter("@stuMail",SqlDbType.VarChar,200);
        para.Value = this.stuMail.Text.Trim();
        comm.Parameters.Add(para);        para=new SqlParameter("@stuRe",SqlDbType.VarChar,1000);
        para.Value = this.stuRe.Text.Trim();
        comm.Parameters.Add(para);        para = new SqlParameter("@stuBirthday", SqlDbType.DateTime);
        para.Value=this.stuBirthday.Text.Trim();
        comm.Parameters.Add(para);        //int i=comm.ExecuteNonQuery();
        comm.ExecuteScalar();        //Response.Write(i); //调用后 i=1    }
我是真看不出来哪里有问题了....真搞不懂 

解决方案 »

  1.   

    1.首先参数赋值使有问题,应该用
    sqlParameter para[]=new sqlParameter[]
    {
     new sqlParameter("参数名",值);
    };
    都是‘垃圾’代码。
    2,
    update Student set stuName=@stuName,stuAddr=@stuAddr,stuPhone=@stuPhone,stuRe=@stuRe,stuMail=@stuMail,stuBirthday=@stuBirthday where stuId=@stuId
    有更新性别字段吗?是不更新,还是忘了写了。行了没问题了,就是挺粗心的。
      

  2.   


    怎么说?
    comm.ExecuteNonQuery();
    会返回1奇怪...
      

  3.   


    我在page load 里做一些事情所以加上  if (this.IsPostBack)
                return;就可以了 唉...搞了这么久 才想起老师说过的 重要属性 
      

  4.   

    Page_Load没有加if(!IsPostBack)判断,导致前面绑定数据覆盖了提交的数据