It seems that you have defined the parameters twice for the query. First in
mycomm.Parameters.Add(New SqlParameter("@Firstname", SqlDbType.NChar, 10))
mycomm.Parameters.Add(New SqlParameter("@Lastname", SqlDbType.NChar, 10))
and then again in
mycomm.Parameters.AddWithValue("@Firstname", TextBox1.Text)
mycomm.Parameters.AddWithValue("@Lastname", TextBox2.Text)
Either define the value for the parameters using the Value property if you use the first ones or leave just the latter ones (probably easier in this case).
Taken from
SqlParameterCollection.AddWithValue method[
^]
Use AddWithValue whenever you want to add a parameter by specifying its name and value