Я просмотрел похожие вопросы по этому вопросу и не нашел ни одного, который мог бы сравниться достаточно близко с моей собственной проблемой. Есть много разных способов вызвать одно и то же исключение.
Я новичок в С# и работаю над простой формой входа, которая хранит информацию о пользователе в базе данных, а затем извлекает ее по запросу.
В режиме отладки строка, в которой генерируется исключение, выглядит так:
cmd.ExecuteNonQuery();
Предыдущие запуски не выдавали эту ошибку, это было только тогда, когда я добавлял guid или пытался хешировать свои пароли.
Дополнительная информация: «Необходимо объявить скалярную переменную @Userguid».
Я посмотрел это и снова получил разные ответы, например, некоторые думали, что это связано со строками подключения, и для их корреспондентов это вполне могло быть, но у меня раньше не было проблем со строкой, поэтому это казалось маловероятным. .
Это мое событие нажатия кнопки, исключение возникает внутри:
private void Button_Click(object sender, RoutedEventArgs e)
{
CheckUserInput();
CheckPassInput();
//Can we create the account?
if (canProceedUserPass == true && canProceedPass == true)
{
//Add username and password to my SqlDb table 'Users'.
Username = NewUsername.Text;
Password = NewPassword.Password.ToString();
Guid userGuid = System.Guid.NewGuid();
string hashedPassword = Security.HashSHA1(Password + userGuid.ToString());
SqlConnection con = new SqlConnection(connectionstring);
using (SqlCommand cmd = new SqlCommand("INSERT INTO [Users] VALUES (@Username, @Password, @Userguid)", con))
{
cmd.Parameters.AddWithValue("@username", Username);
//HashSHA1 takes a hashed string as a parameter.
//Password is effectively replaced by the hash.
cmd.Parameters.AddWithValue("@password", Security.HashSHA1(Password));
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
MessageBox.Show("Thank you " + Username);
var myWindow = new MainWindow();
myWindow.Show();
this.Close();
}
}
Я все еще пытаюсь полностью понять это (его код копирования, который я только что снабдил своими потребностями).
Спасибо.