Эта ошибка появляется при попытке вставить строку с большим количеством символов, чем указано в определении столбца. Сделайте ваши строковые столбцы шире.
Чтобы определить столбец, который вызывает эту ошибку, вы можете изменить свой оператор INSERT, удалив параметры один за другим (удалите строку da.InsertCommand.Parameters.Add
для этого столбца, а в части VALUES оператора INSERT поместите константу, например 'John').
EDIT # 1:
Продолжайте удалять столбцы один за другим (как вы сделали с столбцом пароля) и как только инструкция вставки не завершится неудачей, вы узнаете, какой столбец вызвал ошибку. Затем выполните отладку, чтобы узнать длину значения, которое вы назначаете для (ошибочного) параметра столбца. Длина этого столбца в базе данных должна быть> = длины значения, которое вы пытаетесь вставить.
Еще один момент, на который следует обратить внимание: во время написания вашего вопроса вы думали, что столбец паролей - это проблема, но, возможно, какой-то другой столбец - проблема. И единственное решение этой ошибки - сделать все столбцы достаточно широкими, чтобы в них можно было хранить значения .
EDIT # 2:
Используйте Пароль свойство, чтобы получить текст, введенный пользователем:
da.InsertCommand.Parameters.Add("@Password", SqlDbType.VarChar).Value =
HashPassword(Password_tb.Password);
Чтобы получить длину хешированного пароля, используйте этот код:
string pwdHash = HashPassword(Password_tb.Password);
da.InsertCommand.Parameters.Add("@Password", SqlDbType.VarChar).Value = pwdHash;
Поставьте точку останова во второй строке и проверьте длину строки pwdHash. Столбец пароля в таблице базы данных должен быть не меньше этой длины.