为什么即使执行存储过程也返回false

时间:2009-12-11 06:38:53

标签: ado.net

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。为什么

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

SqlHelper.ExecuteNonQuery返回受命令影响的行数(例如,对于INSERT或UPDATE)。

这不是>根据定义,函数或过程为0 - 因为SQL系统无法知道函数或过程可能影响了多少行。

ref

答案 2 :(得分:0)

您在存储过程的开头是否有SET NOCOUNT ON

在这种情况下,存储过程不会返回受其操作影响的记录数,而ADO.NET的SqlCommand会将其解释为失败。