按钮代码如下: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中调用更新数据,不报错,但是总是不更新数据库,谢谢各位!
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中调用更新数据,不报错,但是总是不更新数据库,谢谢各位!
mySqlCommand.Parameters.Add(spAffectedCount);
第一次运行正确,可是再试又有了新的错误: int intAffectedCount = mySqlCommand.ExecuteNonQuery();
为过程或函数 updateperson 指定的参数太多。
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个参数啊,,也没有输出参数输出啊
返回结果行数是多少,如果是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个参数,看看都是什么东西,很容易就找到问题了
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 存储过程的特殊语法??