2016-09-19 2 views
-4

ниже код для обновления значения в базе данных,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(); 
      } 
     } 

и он по-прежнему бросает и необработанное исключение

"Ошибка синтаксиса около 'Имя пользователя'."

+0

См 'char.Parse (.... Текст) '. –

+0

При отладке вы также должны увидеть, какой именно метод выбрасывает исключение. Этот метод делает то, чего вы не хотите. Подробнее читайте в документации. – hvd

+1

Пожалуйста, используйте Параметрированный запрос https://msdn.microsoft.com/library/bb738521(v=vs.100).aspx http://stackoverflow.com/questions/15246182/sql-update-statement-in-c -sharp –

ответ

1

Errr, char.parse требует односимвольной строки.

char.Parse

Таким образом, если, конечно, ваше имя или фамилия строка длиннее, вы собираетесь получить это исключение ...

Смежные вопросы