gpt4 book ai didi

C# SQL 命令参数不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 21:25:30 24 4
gpt4 key购买 nike

我通过取出参数并用文本替换它们来解决一些问题,但唯一不起作用的参数是@seat,我不明白为什么。

allSeats 是一组自定义控件。我试过用实际的字符串替换参数内容,即。 “A1”,这仍然不起作用。如果我删除 @seat 参数并将其替换为 A1,它会起作用,但我需要能够动态设置列名。

myConnection.Open();

SqlCommand myCommand = new SqlCommand("UPDATE Events SET @seat = @truefalse WHERE Name = @name", myConnection);

SqlParameter param = new SqlParameter();
SqlParameter param2 = new SqlParameter();
SqlParameter param3 = new SqlParameter();
param.ParameterName = "@seat";
param2.ParameterName = "@truefalse";
param2.DbType = System.Data.DbType.Boolean;
param3.ParameterName = "@name";
param.Value = allSeats[i].Name;
param2.Value = allSeats[i].taken;
param3.Value = name;
myCommand.Parameters.Add(param);
myCommand.Parameters.Add(param2);
myCommand.Parameters.Add(param3);
myCommand.ExecuteNonQuery();

感谢任何帮助。如果我需要发布更多相关代码,请告诉我,我会添加它。

最佳答案

在你的

SET @seat = @truefalse

部分,您尝试参数化您的列名。你不能那样做。您只能参数化您的值,而不能参数化列名或表名。

对于这种情况,您可以使用动态 SQL,但不推荐这样做。阅读

作为建议,在这种情况下使用白名单。我希望列名只能有一组固定的可能正确值。当然,这需要在您的输入部分进行强有力的验证。

关于C# SQL 命令参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27289004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com