使用C#设置@variable进行SQL更新

时间:2017-03-28 17:41:07

标签: c# sql-server

我遇到来自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();

变量@otazka从组合框中选择,并始终返回OT1 - OT10,它是数据库中列的名称。
@hodnota包含文本框中的一些文字 如果我使用此SQL查询,则报告错误的SQL语法。

2 个答案:

答案 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();

答案 1 :(得分:0)

列名称需要附加到查询字符串,而不是作为参数附加。例如:

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