In addition to Solution #2, I would change your using statement to:
using (SqlConnection con = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO EmployeeProjects (ProjectId, EmployeeId, Date, NoOfPage, Deadline, IsDeleted, CreatedOn, CreatedBy, UpdatedOn, UpdatedBy) values(@ProjectId, @EmployeeId, @Date, @NoOfPages, @Date, @Deadline, @IsActive, @CreatedOn, @CreatedBy, @UpdatedOn, @UpdatedBy)";
cmd.Parameters.AddWithValue("@ProjectId", ProjectId_TB.Text.Trim());
cmd.Parameters.AddWithValue("@EmployeeId", EmployeeId_TB.Text.Trim());
cmd.Parameters.AddWithValue("@Date", Date_TB.Text.Trim());
cmd.Parameters.AddWithValue("@NoOfPage", NoOfPages_TB.Text.Trim());
cmd.Parameters.AddWithValue("@Deadline", Deadline_TB.Text.Trim());
cmd.Parameters.AddWithValue("@CreatedOn", CreatedBy_TB.Text.Trim());
cmd.Parameters.AddWithValue("@CreatedBy", CreatedBy_TB.Text.Trim());
cmd.Parameters.AddWithValue("@UpdatedOn", UpdatedOn_TB.Text.Trim());
cmd.Parameters.AddWithValue("@UpdatedBy", UpdatedBy_TB.Text.Trim());
cmd.Parameters.AddWithValue("@IsDeleted", IsDeleted_TB.Text.Trim());
con.Open();
int rowsAffected = cmd.ExecuteNonQuery();
}
This is done so that your connection is closed after the application leaves the scope of the using statement.
I would recommend adding a space after the closing parenthesis of the column names in your insert statement and "values":
cmd.CommandText = "INSERT INTO EmployeeProjects (ProjectId, EmployeeId, Date, NoOfPage, Deadline, IsDeleted, CreatedOn, CreatedBy, UpdatedOn, UpdatedBy) values(@ProjectId, @EmployeeId, @Date, @NoOfPages, @Date, @Deadline, @IsActive, @CreatedOn, @CreatedBy, @UpdatedOn, @UpdatedBy)";