2017-03-28 38 views
0

我有從C#SQL更新

string sql = @"UPDATE tucitelotazky SET @otazka = @hodnota;"; 
MySqlCommand cmd = new MySqlCommand(sql, cnn); 
cmd.Parameters.Add("@otazka",otazka); 
cmd.Parameters.Add("@hodnota", hodnota); 

cmd.ExecuteNonQuery(); 

SQL查詢變量@otazka從組合框中選擇一個問題,總是返回OT1 - OT10,它是在列的名稱數據庫。
@hodnota包含文本框中的一些文本。
如果我使用這個SQL查詢,它會報告錯誤的SQL語法。

+0

列名需要追加到您的查詢字符串;這不是一個參數。 – PoweredByOrange

+0

它不能從變量? –

回答

0

您可以讓您的組合包含與每個名稱關聯的值。 例如:

string column = string.Empty; 

switch((int.Parse(cmb.selectedValue)) 
{ 
case 1: 
column = "OT1" 
break; 
. 
. 
. 
case 10: 
column = "OT10" 
break; 
} 

string sql = @"UPDATE tucitelotazky SET " + column + " = " + "@hodnota;"; 
MySqlCommand cmd = new MySqlCommand(sql, cnn); 
cmd.Parameters.Add("@hodnota", SqlDbType.VarChar).Value = hodnota; 

cmd.ExecuteNonQuery(); 
+0

輸入字符串的格式不正確 –

+0

請向我們顯示您的代碼,以便我們分析出現了什麼問題。 –

+0

「更新tucitelotazky設置」+ otazka +「='」+ hodnota +「';」; ....有問題..我不能相信它只是與'':D謝謝大家 –

0

列名稱需要被附加到查詢字符串,不追加作爲參數。例如:

string sql = @"UPDATE tucitelotazky SET [your_column_name] = [your_value];"; 
MySqlCommand cmd = new MySqlCommand(sql, cnn); 
cmd.Parameters.Add("@hodnota", hodnota); 
cmd.ExecuteNonQuery(); 
+0

我認爲那只是與插入設置的問題..因爲所有的時候,當我進入這個。它總是像'OT'='東西',如果我嘗試在數據庫中沒有''旁邊的OT它工作..所以如果我把它給數據庫的字符串它automaticalyy使''' –