ниже код для обновления значения в базе данных,Unhandled Формат Exception шпагата
string updateCom = ("UPDATE Login SET Username = '" + textUsername.Text + "', Password = '" + textPassword.Text + "', Role = '" + comboBox1.Text + "', First_Name = '" + char.Parse(textFirstName.Text) + "', Last_Name = '" + char.Parse(textLastName.Text) + "', Age = " + int.Parse(textAge.Text) + "', Gender = " + char.Parse(textAge.Text) + " WHERE User_ID = " + textUser_ID.Text);
все это заключено в методе попытки поймать и при отладке я получил
«FormatException был необработанным "
, он также говорит, что строка должна быть ровно одним символом. Это необработанное исключение происходит только тогда, когда я ввожу «John Harambe» в качестве первого имени. Может ли кто-нибудь просветить меня в правильном формате?
МОЕ РЕШЕНИЕ Мой вопрос:
так я использовал параметризованный запрос, как предложил один из комментаторов, вот мой код до сих пор;
updateCom = new SqlCommand("UPDATE Login"
+ "SET Username = @username,"
+ "Password = @password,"
+ "Role = @role,"
+ "First_Name = @firstName,"
+ "Last_Name = @lastName,"
+ "Age = @age,"
+ "Gender = @gender"
+ "WHERE User_ID = @user_ID");
updateCom.Connection = searchCon;
searchCon.Open();
String Username = textUsername.Text;
String Password = textPassword.Text;
String Role = comboBox1.Text;
String First_Name = textFirstName.Text;
String Last_Name = textLastName.Text;
String Age = textAge.Text;
String Gender = textGender.Text;
if (searchCon.State == ConnectionState.Open)
{
updateCom.Parameters.AddWithValue("@username", Username);
updateCom.Parameters.AddWithValue("@password", Password);
updateCom.Parameters.AddWithValue("@role", Role);
updateCom.Parameters.AddWithValue("@firstName", First_Name);
updateCom.Parameters.AddWithValue("@lastName", Last_Name);
updateCom.Parameters.AddWithValue("@age", Age);
updateCom.Parameters.AddWithValue("@gender", Gender);
try
{
updateCom.ExecuteNonQuery();
if (MessageBox.Show("Data UPDATED.", "Admin Power",
MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
{
searchCon.Close();
}
else
{
if(MessageBox.Show("Data NOT UPDATED", "Admin Power",
MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
{
return;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
searchCon.Close();
}
}
и он по-прежнему бросает и необработанное исключение
"Ошибка синтаксиса около 'Имя пользователя'."
См 'char.Parse (.... Текст) '. –
При отладке вы также должны увидеть, какой именно метод выбрасывает исключение. Этот метод делает то, чего вы не хотите. Подробнее читайте в документации. – hvd
Пожалуйста, используйте Параметрированный запрос https://msdn.microsoft.com/library/bb738521(v=vs.100).aspx http://stackoverflow.com/questions/15246182/sql-update-statement-in-c -sharp –