2012-05-16 54 views
0

我想用C#。我來更新特定行4列在MySQL更新多列在MySQL要更新,如果一個特定的領域已經在文本框中輸入到數據庫中的使用C#文本框

值。我正在使用

下面的查詢。

string query = " update orderform set enrolmentexpected = " + 
    textBox2.Text + " stockonhand=" + textBox3.Text + " numberrequired = " 
    + textBox4.Text + " where name = " + textBox1.Text + ";"; 

我得到一個例外,有在MySQL語法某些錯誤,但我不能

找到這樣。是我的查詢權或表達式後有一些語法錯誤,有一些方法用於

更新多個列

回答

0
string query = " update orderform set enrolmentexpected = " + 
textBox2.Text + ", stockonhand=" + textBox3.Text + ", numberrequired = " 
+ textBox4.Text + " where name = '" + textBox1.Text + "';" 

想這名字是一個字符串和其他兩個int

+0

@ user1244383它的工作感謝; – jaggi

0

看來你忘了逗號「」:

string query = " update orderform set enrolmentexpected = " + textBox2.Text + ", stockonhand=" + textBox3.Text + ", numberrequired = " + textBox4.Text + " where name = " + textBox1.Text + ";";

並引用過:

string query = " update orderform set enrolmentexpected = '" + textBox2.Text + "', stockonhand= '" + textBox3.Text + "' , numberrequired = '" + textBox4.Text + "' where name = " + textBox1.Text + ";";

+0

@ dada686之間沒有逗號,當我進入以前的名稱來更新行其他列它給出了一個例外情況,即未知的列名,它將列名輸入的值作爲列的名稱 – jaggi

+1

@jaggi這個錯誤是因爲你忘了把逗號和引號,所以解釋者對誰是什麼感到困惑。 – dada686

+1

@jaggi你應該看看史蒂夫的答案,這是處理這種情況的最好方法。 – dada686

0

看來你不使用單一曲otes和逗號。
使用此

string query = " update orderform set enrolmentexpected = '" + 
textBox2.Text + "', stockonhand='" + textBox3.Text + "', numberrequired = '" 
+ textBox4.Text + "' where name = '" + textBox1.Text + "';"; 

這是有效的情況下,所有的數據類型是類型char或varchar的。

2

你必須在該行許多問題。

使用這樣的

using(MySqlConnection cn = GetConnection()) 
{ 
    cn.Open(); 
    string queryText = "update orderform set enrolmentexpected = ?en, stockonhand=?st, numberrequired=?num where name = ?name;";  
    MySqlCommand cmd = new MySqlCommand(queryText, cn); 
    cmd.Parameters.AddWithValue("?en", textBox2.Text); 
    cmd.Parameters.AddWithValue("?st", textBox3.Text); 
    cmd.Parameters.AddWithValue("?num", textBox4.Text); // ?? require conversion to Int ??? 
    cmd.Parameters.AddWithValue("?name", textBox1.Text); 
    cmd.ExecuteNonQuery(); 
}