2017-03-28 9 views
0

私は変数@otazkaをコンボボックスから選択される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クエリに問題があり、常に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

"UPDATE tucitelotazky SET" + 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 ' –