2015-06-10 5 views
-1

Следующая исключение, когда я запускаю код ниже:данных в выражении критериев C#

system.data.oledb.oledbexception несоответствие типов данных в выражении критериев

private void buttonUp_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     connection.Open(); 
     OleDbCommand command = new OleDbCommand(); 
     command.Connection = connection; 
     string query = "UPDATE data SET Name ='"+txtNL.Text+"' , Period ='"+txtper.Text+"' , DOB = '"+txtmonth.Text+"', price = '"+txtprice.Text+"', follow = '"+combofw.Text+"' WHERE ID = "+txtid.Text+" "; 
     //(ID,Name,Period,DOB,price,follow) 
     MessageBox.Show(query); 
     command.CommandText = query; 

     command.ExecuteNonQuery(); 
     MessageBox.Show("Data Edited/Updated Successful"); 
     connection.Close(); 
    } 
    catch (Exception ex) 
    { MessageBox.Show("Error " + ex); } 
} 

Как я могу это исправить?

+2

Пожалуйста, не используйте конкатенацию строк для создания операторов SQL. Представьте себе пользователя, набравшего '0; пользователи с разделителями таблиц, -' в txtID.Text. Или просто 'x' (возможно, что здесь произошло). Используйте параметризованные запросы, гарантируя, что параметры имеют те же типы, что и базовые поля –

ответ

0

Один из ваших входов не соответствует типу данных, который ожидает таблица базы данных. Например, если вы передаете «abbx» в качестве текста даты, и ваша таблица ожидает DateTime, это не сработает. Убедитесь, что вы соответствуете типам ввода, указанному в таблице.

+0

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

+0

Спасибо за ответ на вопрос. Код решается. string query = "UPDATE data SET Name = '" + txtNL.Text + "', Period = '" + txtper.Text + "', DOB = '" + txtmonth.Text + "', price = '" + txtprice.Text + "', follow ='" + combofw.Text + "'WHERE ID ='" + txtid.Text + "'"; –

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