Your command expects two parameters CityId and CityName. You could add this in your SqlCommand like this
cmd.Parameters.AddWithValue("@CityId", 1);
cmd.Parameters.AddWithValue("@CityName", "MyCity");
Bu most likely you could just remove these parameters from your procedure:
ALTER PROCEDURE [dbo].[Select_City_SP]
as
begin
select CityId,CityName from City
return @@Rowcount
end
as you want it to return all rows.