title: exec stored procedure on c# error
body: <p>i'm tryng to exec SP on c# and get that error</p>
  
  <pre><code>    System.Data.SqlClient.SqlException: Procedure or function 'usp_Registrations_Insert' expects parameter '@RegistrationID', which was not supplied.
     at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
     at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
     at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
     at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
     at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
     at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
     at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
     at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
     at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
     at C2DMwebService.C2DM.RegisterDevice(String DeviceID, String RegistrationId) in c:\users\eyal\documents\visual studio 2010\Projects\C2DMwebService\C2DMwebService\C2DM.asmx.cs:line 52
  </code></pre>
  
  <p>the code that i exec is</p>
  
  <pre><code>SqlCommand cmd = new SqlCommand();
                  string connStr = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
                  SqlConnection con = new SqlConnection(connStr);
                  //cmd.Parameters.Add("@RegistrationID", SqlDbType.NVarChar).Value = RegistrationId;
                  //cmd.Parameters.Add("@DeviceID", SqlDbType.NVarChar).Value = DeviceID;
  
                  //cmd.Parameters.Add(new SqlParameter("@RegistrationID", RegistrationId));
                  //cmd.Parameters.Add(new SqlParameter("@DeviceID", DeviceID));
  
                  SqlParameter myParm1 = cmd.Parameters.Add("@RegistrationID", SqlDbType.NVarChar, 200);
                  myParm1.Value = RegistrationId;
  
                  SqlParameter myParm2 = cmd.Parameters.Add("@DeviceID", SqlDbType.NVarChar, 200);
                  myParm2.Value = DeviceID;
  
                  cmd = new SqlCommand("usp_Registrations_Insert", con);
                  cmd.CommandType = CommandType.StoredProcedure;
                  con.Open();
                  cmd.ExecuteNonQuery();
                  con.Close();
  </code></pre>
  
  <p>my SP</p>
  
  <pre><code>ALTER PROCEDURE dbo.usp_Registrations_Insert
      (
      @RegistrationID NVarChar(200),
      @DeviceID NVarChar(200)
      )
  AS
      /* SET NOCOUNT ON */
  
      INSERT INTO Registrations
                           (RegistrationID, DeviceID)
  VALUES        (@RegistrationID,@DeviceID)
      RETURN @@rowcount;
  </code></pre>