title: C# stored procedure returning -1 Repeatedly
body: <p>I have repeatedly test this #blankety-blank# stored procedure on SQL Server, and it returns either 0 or number of rows, but in C# I am always getting -1. I have been debugging this #blank# thing for hours and always -1. </p>
  
  <p>Here's the stored procedure code. </p>
  
  <pre><code>Create procedure [dbo].[sp_enter_new_student] 
      @Prenom_detudiant [varchar](50)  = NULL, 
      @nom_detudiant [varchar](50)  = NULL,
      @nationalite_detudiant [varchar](40)  = NULL,
      @langue_parle [varchar](15)  = NULL,
      @nombre_denfants [int] = NULL,
      @sexe_detudiant [char](1) = NULL,
      @program_pk [int] = NULL,
      @Numero_detudiant int = NULL
  As 
  Declare @numOfRowsBefore int = 0; 
  declare @numOfRowsAfter int = 0; 
  declare @Error int = -100; 
  BEGIN  
      SET NOCOUNT ON; 
      select @numOfRowsBefore = COUNT(*) from tbl_students where Numero_detudiant = @Numero_detudiant; 
  
      if (@numOfRowsBefore &gt; 0)
      begin
          Print "Student already exists, Insertion will fail!";
          Print "Insertion Failure ! " + CONVERT(varchar(10), @numOfRowsBefore);
          return @numOfRowsBefore; --&gt;  -1 indicates insertion failure
      End
      else if (@numOfRowsBefore = 0)
      begin
          Print "Student doesn't exists, Insertion will be Success!";
          Print "Insertion Success ! " + CONVERT(varchar(10), @numOfRowsBefore);
          return @numOfRowsBefore; --&gt;  -1 indicates insertion failure
      End
  
  END 
  </code></pre>
  
  <hr>
  
  <p>And here's a C# code </p>
  
  <hr>
  
  <pre><code>public int enregistreNouveauEtudiant(string Prenom_detudiant, string nom_detudiant, string nationalite_detudiant, string langue_parle, string nombre_denfants, string sexe_detudiant, string program_pk, string Numero_detudiant)
  {
      int numberOfRowsInserted = 0;
      //try
      //{ 
  
      SqlConnection connection = this.GetConnection();
      SqlCommand insertStudentCommand = new SqlCommand("sp_enter_new_student", connection);
      connection.Open();
      insertStudentCommand.CommandType = CommandType.StoredProcedure;
  
      //insertStudentCommand.Parameters.Add("@ID", SqlDbType.Int);
      //insertStudentCommand.Parameters["@ID"].Direction = ParameterDirection.Output;
  
      insertStudentCommand.Parameters.Add("@Prenom_detudiant", SqlDbType.VarChar, 50).Value = Prenom_detudiant;
      insertStudentCommand.Parameters.Add("@nom_detudiant", SqlDbType.VarChar, 50).Value = nom_detudiant;
      insertStudentCommand.Parameters.Add("@nationalite_detudiant", SqlDbType.VarChar, 40).Value = nationalite_detudiant;
      insertStudentCommand.Parameters.Add("@langue_parle", SqlDbType.VarChar, 15).Value = langue_parle;
      insertStudentCommand.Parameters.Add("@nombre_denfants", SqlDbType.Int).Value = nombre_denfants;
      insertStudentCommand.Parameters.Add("@sexe_detudiant", SqlDbType.Char, 1).Value = sexe_detudiant;
      insertStudentCommand.Parameters.Add("@program_pk", SqlDbType.Int).Value = program_pk;
      insertStudentCommand.Parameters.Add("@Numero_detudiant", SqlDbType.Int).Value = Numero_detudiant;
  
      numberOfRowsInserted = insertStudentCommand.ExecuteNonQuery();
  
      connection.Close();
  
      return numberOfRowsInserted;
  }
  </code></pre>
  
  <p>Can anyone have a look at this problem please? I used try and catch block as well, it's absolutely useless in this case. </p>
  
  <p>Thanks.</p>