2016-03-21 2 views
2

им пытаются обновить строку в моей базе данных под названием gestion_concour с помощью C#данных слишком долго в строке 1

private void Modifier_Concour_Click(object sender, RoutedEventArgs e) 
{ 
    string input_Code = Code.Text; 
    string input_Des = Des.Text; 
    string input_Spe = Spe.Text; 
    string selected = ConcourList.Text; 
    MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder(); 
    builder.Server = "127.0.0.1"; 
    builder.UserID = "root"; 
    builder.Password = "root"; 
    builder.Database = "gestion_concour"; 
    MySqlConnection connection = new MySqlConnection(builder.ToString()); 
    connection.Open(); 
    string query = "update gestion_concour.concour set Code = @N_Code, Designation = @N_Des, Specialite = @N_Spe where Code = @A_Code"; 
    MySqlCommand mcmd = new MySqlCommand(query, connection); 
    mcmd.Parameters.AddWithValue("@A_Code", selected); 
    mcmd.Parameters.AddWithValue("@N_Code", input_Code); 
    mcmd.Parameters.AddWithValue("@N_Des", input_Des); 
    mcmd.Parameters.AddWithValue("@N_Spe", input_Spe); 
    MySqlDataReader myReader; 
    try 
    { 
     myReader = mcmd.ExecuteReader(); 
     while (myReader.Read()) 
     { 
     } 
     Code.Clear(); 
     Des.Clear(); 
     Spe.Clear(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    connection.Close(); 
    Fill_Combo(); 
    fill_grid(); 
} 

я заполнить текстовое поле, так что запрос идет как

update gestion_concour.concour set Code = 'CAEPST', Designation = 'Concours Accées a EPST', Specialite = 'EPST' where Code = '3'; 

и я получил эту Error Я попытался передать запрос в woekbench, и он работает нормально. , а что является проблемой (код VARCHAR (10))

+2

'mcmd.Parameters.AddWithValue («@ N_Code», input_Des);' выглядит неправильно – wimh

+0

я полагаю, что ваша проблема может быть исправлена ​​просто добавив Обрезка после ConcourList.Text – Steve

+0

@Wimmel жаль только frapp ошибки –

ответ

1

я бы, вероятно, эти вещи, чтобы выяснить, что пошло не так -

  1. Проверьте базу данных, если Code столбец действительно VARCHAR (10).
  2. Если это так, попробуйте проверить значение строки input_Code, если это действительно «CAEPST».
  3. Если он проверяет, то перед установкой его необходимо обрезать текстовое поле.
  4. Вы также можете протестировать обновление только столбца.
  5. Другой вариант: мы можем использовать фактическое текстовое поле в качестве вашего значения. Как это - mcmd.Parameters.AddWithValue("@N_Code", Code.Text.ToString());

  6. Или мы можем также сделать это так, просто чтобы увидеть, если это действительно идет через - mcmd.Parameters.AddWithValue("@N_Code", "CAEPST");

Надеется, что это помогает. :)

1

Ну, вы используете ExecuteReader. Если вы хотите, чтобы EXEC команду Update, вы должны использовать ExecuteNonQuery .so было бы:

try 
{ 
    int i = mcmd.ExecuteNonQuery(); 
} 

Также эти строки кажется неправильным:

mcmd.Parameters.AddWithValue("@N_Code", input_Des); 
mcmd.Parameters.AddWithValue("@N_Des", input_Des); 

Кажется, вы добавляете обозначение вместо кода , Вероятно, это должно быть:

mcmd.Parameters.AddWithValue("@N_Code", input_Code); 

Изменение этого не повредит также, просто чтобы убедиться, что нет пробелов позади вызывает проблему:

string input_Code = Code.Text.Trim(); 
string input_Des = Des.Text.Trim(); 
string input_Spe = Spe.Text.Trim(); 
string selected = ConcourList.Text.Trim(); 
+0

Правильно, но это вряд ли устраняет проблему – Steve

+0

как ее изменить ?? извините, я новичок –

+0

Вы правы @Steve ..отредактировал – Pikoh

1

Похоже, что вы используете неправильную переменную вы параметр. Попробуйте

mcmd.Parameters.AddWithValue("@N_Code", input_Code); 

вместо

mcmd.Parameters.AddWithValue("@N_Code", input_Des); 
+0

по-прежнему та же проблема –

+0

@IlyesGHOMRANI что такое значение 'input_Code'? – user1666620

+0

input_code = CAEPST –

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