按钮代码如下:SqlConnection conn = new SqlConnection();
                SqlDataAdapter da = new SqlDataAdapter();
                conn.ConnectionString = @"Data Source=.;
                                        Trusted_Connection=yes;
                                        Initial Catalog=Employee";
                conn.Open();
                SqlCommand mySqlCommand = new SqlCommand();
                mySqlCommand.Connection = conn;
                mySqlCommand.CommandText = "updateperson";
                mySqlCommand.CommandType = CommandType.StoredProcedure;                SqlParameter spPno = new SqlParameter("@Pno", SqlDbType.Char, 10);
                //SqlParameter spPname = new SqlParameter("@Pname",SqlDbType.NChar,10);
                SqlParameter spStatusID = new SqlParameter("@StatusID",SqlDbType.VarChar,10);
                SqlParameter spDeptno = new SqlParameter("@Deptno",SqlDbType.Char,4);
                SqlParameter spEmail = new SqlParameter("@Email", SqlDbType.VarChar,50);
                SqlParameter spAffectedCount = new SqlParameter("@AffectCount", SqlDbType.Int);                spAffectedCount.Direction = ParameterDirection.Output;
                spAffectedCount.Value = -1;                spPno.Direction = ParameterDirection.Input;
                spStatusID.Direction = ParameterDirection.Input;
                spDeptno.Direction = ParameterDirection.Input;
                spEmail.Direction = ParameterDirection.Input;                spEmail.Value = this.txtudemail.Text.Trim();
                spDeptno.Value = this.txtuddeptno.Text.Trim();
                spStatusID.Value = this.txtudstatusid.Text.Trim();
                spPno.Value = this.txtquerypno.Text.Trim();                mySqlCommand.Parameters.Add(spPno);
                mySqlCommand.Parameters.Add(spDeptno);
                mySqlCommand.Parameters.Add(spEmail);
                mySqlCommand.Parameters.Add(spStatusID);                int intAffectedCount = mySqlCommand.ExecuteNonQuery();
                lblupdate.Visible = true;
                 lblupdate.Text = "共更新" + intAffectedCount.ToString() + "行";
                mySqlCommand.Dispose();
                conn.Dispose();
、存储过程如下:CREATE procedure updateperson(@Pno Char(10),
@StatusID varchar(10),
@Deptno char(4),@Email nvarchar(50))
as
update person set StatusID=@StatusID where Pno=@Pno
update person set Deptno=@Deptno where Pno=@Pno
update person set Email=@Email where Pno=@Pno
GO刚学C# 存储过程在查询分析器中执行正确,
当时在vs2008中调用更新数据,不报错,但是总是不更新数据库,谢谢各位!

解决方案 »

  1.   

    没有啊!是那个数据库啊!我刚才有改了下加了一行:
     mySqlCommand.Parameters.Add(spAffectedCount);
    第一次运行正确,可是再试又有了新的错误: int intAffectedCount = mySqlCommand.ExecuteNonQuery();
    为过程或函数 updateperson 指定的参数太多。
      

  2.   

     spAffectedCount.Direction = ParameterDirection.Output; 
                    spAffectedCount.Value = -1; 
                    spPno.Direction = ParameterDirection.Input; 
                    spStatusID.Direction = ParameterDirection.Input; 
                    spDeptno.Direction = ParameterDirection.Input; 
                    spEmail.Direction = ParameterDirection.Input; 

    这里怎么加了5个参数,还有个output的输出参数
    CREATE procedure updateperson(@Pno Char(10), 
    @StatusID varchar(10), 
    @Deptno char(4),@Email nvarchar(50)) 
    as 
    update person set StatusID=@StatusID where Pno=@Pno 
    update person set Deptno=@Deptno where Pno=@Pno 
    update person set Email=@Email where Pno=@Pno 
    GO 你的存储过程只要4个参数啊,,也没有输出参数输出啊
      

  3.   

    先判断int intAffectedCount = mySqlCommand.ExecuteNonQuery(); 
    返回结果行数是多少,如果是0
    输出下这 spEmail.Value = this.txtudemail.Text.Trim(); 
                    spDeptno.Value = this.txtuddeptno.Text.Trim(); 
                    spStatusID.Value = this.txtudstatusid.Text.Trim(); 
                    spPno.Value = this.txtquerypno.Text.Trim(); 4个参数,看看都是什么东西,很容易就找到问题了
      

  4.   

    那就更简单了,把输入的值都搞出来,去SQL查询分析器里,exec updateperson传4个参数看看啊
      

  5.   

    update person set StatusID=@StatusID where Pno=@Pno 
    update person set Deptno=@Deptno where Pno=@Pno 
    update person set Email=@Email where Pno=@Pno 
    没在SQL SERVER下玩过存储过程,不过这个语法
    一般的不就是update person set StatusID=@StatusID ,Deptno=@Deptno ,Email=@Email
    where Pno=@Pno
    为什么写三个语句呢,难道是SQL SERVER 存储过程的特殊语法??