2009-12-11 86 views
0
public bool Update() 
     { 
      SqlParameter[] param = new SqlParameter[5]; 
      param[0] = new SqlParameter("@EmpId", EmpId); 
      if (string.IsNullOrEmpty(Name)) 
      { 
       param[1] = new SqlParameter("@Name", DBNull.Value); 
      } 
      else 
      { 
       param[1] = new SqlParameter("@Name", Name); 
      } 
      if (Salary == null) 
       param[2] = new SqlParameter("@Salary", DBNull.Value); 
      else 
       param[2] = new SqlParameter("@Salary", Salary); 
      if (DateofBirth == null) 
       param[3] = new SqlParameter("@DateofBirth", DBNull.Value); 
      else 
       param[3] = new SqlParameter("@DateofBirth", DateofBirth); 
      if (DeptId == null) 
       param[4] = new SqlParameter("@DeptId", DBNull.Value); 
      else 
       param[4] = new SqlParameter("@DeptId", DeptId); 
      return (Convert.ToInt32(SqlHelper.ExecuteNonQuery(CONNECTION_STRING, "InsertEmployee", param)) > 0);    
     } 

即使存储过程执行,返回false.Why为什么返回false即使执行存储过程

+0

你能告诉SP的代码? – 2009-12-11 06:44:11

回答

3

ExecuteNonQuery返回受影响的行数。基于上下文线索,它看起来像存储过程由于某种原因没有插入行。

0

SqlHelper.ExecuteNonQuery返回受命令(例如,用于一个INSERT或UPDATE)的行数。

这不是> 0的函数或过程,顾名思义 - 因为SQL系统无法知道有多少行的函数或过程可能会受到影响。

ref

0

你有一个SET NOCOUNT ON在你的存储过程的开始?

在这种情况下,存储过程不返回所影响其业务的记录数量,以及ADO.NET的SqlCommand的解释,作为一个失败。

相关问题