Probably, it's becasue you are not listign the columns you want to enter the data to in your INSERT statement:
INSERT INTO MyTable VALUES ('hello', 'world')
will fail if there are three columns in you table, and the first one is (for example) an Identity column providing an ID value for the row. The reason why is simple: when you do not specify columns, SQL inserts values into columns by index, starting at the first column in the table, and then the second and so on.
So the INSERT above tries to insert a string 'Hello' into an integer column, and the insert fails as a result.
To prevent this, always list your column names:
INSERT INTO MyTable (UserName, Gender...) VALUES (@name, @Gender, ...)