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。为什么
答案 0 :(得分:3)
ExecuteNonQuery返回受影响的行数。基于上下文线索,看起来存储过程由于某种原因没有插入行。
答案 1 :(得分:0)
SqlHelper.ExecuteNonQuery返回受命令影响的行数(例如,对于INSERT或UPDATE)。
这不是>根据定义,函数或过程为0 - 因为SQL系统无法知道函数或过程可能影响了多少行。
答案 2 :(得分:0)
您在存储过程的开头是否有SET NOCOUNT ON
?
在这种情况下,存储过程不会返回受其操作影响的记录数,而ADO.NET的SqlCommand会将其解释为失败。