2009-12-11 3 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);    
     } 

Même si la procédure stockée exécute, retour false.WhyDe retour faux, même si exécute la procédure stockée

+0

Pouvez-vous montrer le code sp? –

Répondre

3

ExecuteNonQuery renvoie le nombre de lignes affectées. Basé sur des indices contextuels, il semble que la procédure stockée n'a pas inséré une ligne pour une raison quelconque.

0

SqlHelper.ExecuteNonQuery renvoie le nombre de lignes affectées par la commande (par exemple pour un INSERT ou UPDATE).

Ce n'est pas> 0 pour une fonction ou d'une procédure, par définition - parce que le système SQL ne peut pas savoir combien de lignes la fonction ou de la procédure pourraient avoir affecté.

ref

0

Avez-vous SET NOCOUNT ON au début de votre proc stocké?

Dans ce cas, les procédures stockées ne retourne pas le nombre d'enregistrements qui ont été touchés par ses opérations, et SqlCommand de ADO.NET interprète que comme un échec.

Questions connexes