2015-06-11 2 views
2

Я новичок в программировании на C#, и я не могу получить этот код. Ошибка, которую я получаю:Входная строка не в правильном формате

Ввод строки ввода был неправильным.

Я знаю, что это дублированный вопрос, но то, что я нашел до сих пор, не помогло мне. Я использую следующий код, чтобы вставить некоторые данные в базу данных mssql.

public void btnAdauga_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     using (SqlConnection con = new SqlConnection(cs)) 
     { 
      con.Open(); 
      SqlCommand cmd = new SqlCommand(insert, con); 
      cmd.Parameters.AddWithValue("@IDAutocar", txtID.Text); 
      cmd.Parameters.AddWithValue("@IDTipAutocar", txtIDTip.Text); 
      cmd.Parameters.AddWithValue("@TipAutocar", int.Parse(cmbTip.SelectedValue.ToString())); 
      int val = cmd.ExecuteNonQuery(); 
      MessageBox.Show(val + "Autocarul a fost adaugat cu succes!"); 
      con.Close(); 
      this.Dispose(); 
     } 
    } 

    catch (Exception er){MessageBox.Show(er.Message);} 
} 

Вкладыш заявление: string insert = "INSERT INTO Autocare (IDAutocar, IDTipAutocar, TipAutocar) VALUES (@IDAutocar, @IDTipAutocar, @TipAutocar)";

Ошибка в этой строке кода: cmd.Parameters.AddWithValue("@TipAutocar", int.Parse(cmbTip.SelectedValue.ToString())); Может кто-нибудь просветить меня, что мне не хватает? Спасибо

+0

Что такое значение 'cmbTip.SelectedValue.ToString()' в данный момент? –

+0

Возможно, это связано с cmbTip.SelectedValue не имеет числа, которое может быть преобразовано в int. – Adil

+0

@YeldarKurmangaliyev - комбо заполняется некоторыми значениями, используя оператор select – rrrrdc

ответ

0

Попробуйте использовать функцию Int.TryParse вместо Int.Parsse и обрабатывать исключения синтаксического анализа перед этой строкой. Как это:

 using (SqlConnection con = new SqlConnection(cs)) 
     { 
      con.Open(); 
      SqlCommand cmd = new SqlCommand(insert, con); 
      cmd.Parameters.AddWithValue("@IDAutocar", txtID.Text); 
      cmd.Parameters.AddWithValue("@IDTipAutocar", txtIDTip.Text); 

      int tipAutocar = 0; 
      if (int.TryParse(cmbTip.SelectedValue.ToString(), out tipAutocar)) 
      { 
       //if successful 
       cmd.Parameters.AddWithValue("@TipAutocar", tipAutocar)); 
      } 
      else 
      { 
       //if not successful, do sth else 
      } 

      int val = cmd.ExecuteNonQuery(); 
      MessageBox.Show(val + "Autocarul a fost adaugat cu succes!"); 
      con.Close(); 
      this.Dispose(); 
     } 
0

Если выпадающий содержит Int значения как строки, а затем использовать

int.Parse(cmbTip.Text); 

Если вы хотите, чтобы индекс выделенного текста, а затем использовать

int.Parse(cmbTip.SelectedIndex); 
0

Согласно Yeldar предложение, я удалил int.Parse и использовал только combo.SelectedValue, и он сработал!

0
  1. Debug правильно с точки останова и шаг в коде, и в меню отладки добавить переменные, представляющие интерес в окне «Watch» или искать их в окне «Locals» во время отладки. [например, cmbTip.SelectedValue.ToString()]
  2. Как указано другими cmbTip.SelectedValue.ToString(), это может послужить причиной исключения.
  3. для cmbTip даже после выбора значения ошибка сохраняется, или selectedValue приходит как NULL, пытаются с помощью SelectedText
Смежные вопросы