OleDbException не было обработано — несоответствие типа данных для типа Int-Field

У меня есть свободная таблица My_Table1. My_Table1 имеет следующее поле

Field-Name  ->  sl_no Integer - Width 4

Поэтому из С#, пока я вставляю через OleDb, он дает ошибку, например

"Data Type Mismatch"

И моя OleDbCommand

int a1 = 3;

OleDbCommand OleCmd1 = new System.Data.OleDb.OleDbCommand("Insert into My_Table1 values('"+a1+"')", OleCon1)

Спасибо за помощь


person Paramu    schedule 02.10.2012    source источник
comment
Попробуйте удалить одинарные кавычки, так как это целочисленное значение, а не строковое значение.   -  person D Stanley    schedule 02.10.2012


Ответы (1)


Оператор INSERT вставляет символьное значение 'a1'. Это не может быть сохранено в целочисленном поле. Если a1 является переменной в коде, то, возможно, вы ищете это:

System.Data.OleDb.OleDbCommand("Insert into My_Table1 values("+a1.ToString()+")", OleCon1)

С точки зрения «лучших практик», вероятно, лучше использовать параметризованный запрос, чтобы выработать привычку избегать проблем с SQL-инъекциями. С целочисленным значением приведенный выше оператор, вероятно, подходит, но в целом не очень удобно создавать операторы SQL с простой конкатенацией.

person Mark Wilkins    schedule 02.10.2012