I have corrected your code, Please try this,
string sCon = ConfigurationManager.AppSettings["ConString"];
SqlConnection con = new SqlConnection(sCon);
SqlParameter p1 = new SqlParameter("@Username", SqlDbType.NVarChar,50);
SqlParameter p2 = new SqlParameter("@Password", SqlDbType.NVarChar, 50);
SqlParameter p3 = new SqlParameter("@FirstNAME ", SqlDbType.NVarChar, 50);
SqlParameter p4 = new SqlParameter("@LastName", SqlDbType.NVarChar, 50);
SqlParameter p5 = new SqlParameter("@EMail", SqlDbType.NVarChar, 50);
p1.Direction = ParameterDirection.InputOutput;
p2.Direction = ParameterDirection.Output;
p3.Direction = ParameterDirection.Output;
p4.Direction = ParameterDirection.Output;
p5.Direction = ParameterDirection.Output;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
cmd.Parameters.Add(p3);
cmd.Parameters.Add(p4);
cmd.Parameters.Add(p5);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "profdata";
cmd.Connection = con;
p1.Value = TextBox1.Text;
p2.Value = TextBox2.Text;
p3.Value = TextBox3.Text;
p4.Value = TextBox4.Text;
p5.Value = TextBox5.Text;
cmd.ExecuteNonQuery();
TextBox3.Text = p3.Value.ToString() ;
TextBox4.Text = p4.Value.ToString() ;
TextBox5.Text = p5.Value.ToString() ;
con.Close();
Modify the SP
create PROCEDURE [dbo].[profdata]
@username nvarchar (50) OUTPUT,
@password nvarchar (50) output,
@firstname NVARCHAR(50) output,
@lastname NVARCHAR(50) output,
@email NVARCHAR(50) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SET @lastname = (SELECT [Last Name] FROM PROFILE WHERE @username=Username)
SET @firstname = (SELECT [First Name] FROM PROFILE WHERE @username=Username)
SET @email = (SELECT [E-Mail] FROM PROFILE WHERE @username=Username)
END