2011-12-23 8 views
-2

次の更新クエリに問題があります。SQLの整数型の更新

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インジェクション攻撃が実行されます。 http://en.wikipedia.org/wiki/SQL_injection –

+1

エラーまたはエフェクト/出力は何ですか?期待される効果は何ですか? – Yuck

+0

問題が実際に何であるかを知ることは役に立ちます。つまり、何のエラーがスローされ、行が少なすぎるか、行が多すぎるか? –

答えて

3

単純な答えは、あなたのTextBoxの1つにおそらくこれを破る内容があることです。より良い答えは、SQLインジェクション攻撃に対して脆弱であるため、このようにクエリを書くことは決してありません。パラメータ化されたクエリの実行方法を調べる必要があります。

MSDNでHow to: Execute a Parameterized Queryの記事を読むことから始めます。