2011-12-23 2 views
-2

Что-то не так со следующим запросом на обновление.sql update integer type

string sql = "update Car set plate = '" + textBox2.Text + "' , color='" 
      + textBox3.Text + "' , model='"+textBox5.Text+ "' , year= " 
      + textBox4.Text; 
sql += " where carid= " + textBox1.Text; 

int res = CarDatabase.executeOthers(sql); 
if (res > 0) 
{ 
    string sql2 = "select * from Car"; 
    DataTable dt = CarDatabase.executeSelect(sql2); 
    mainframe.DataGridView1.DataSource = dt; 
    MessageBox.Show("Updated Successfully"); 
} 

Фактически, у меня возникает та же проблема, когда я добавляю год к моему запросу. Зачем? : S

+9

SQL Injection Attacks go! http://en.wikipedia.org/wiki/SQL_injection –

+1

Что такое ошибка или эффект/вывод? И каков ожидаемый эффект? – Yuck

+0

Знание того, что на самом деле проблема, было бы полезно. Т.е. какая ошибка вызывается, слишком мало строк обновлено, слишком много строк? –

ответ

3

Простой ответ заключается в том, что у одного из ваших текстовых полей, вероятно, есть контент, который нарушает это. Лучший ответ - никогда, никогда не писать запрос таким образом, потому что он уязвим для SQL-инъекций. Вам нужно посмотреть, как выполнять параметризованные запросы.

Публикация статьи How to: Execute a Parameterized Query на MSDN.