gpt4 book ai didi

c# - 必须声明标量变量

转载 作者:太空狗 更新时间:2023-10-30 00:55:07 25 4
gpt4 key购买 nike

当我尝试在我的应用程序中执行以下非查询 sql 命令时,我总是收到错误消息 -

Must declare the scalar variable '@RateID'

我有点不知道为什么会收到此错误。这是我的代码:

string sqlText = "INSERT INTO tblRates (RateID, IPName, RateName, Rate, DateFrom, DateTo, Active) " +
"VALUES (@RateID, @IPName, @RateName, @Rate, @DateFrom, @DateTo, @Active);";

SqlCommand sqlCom = new SqlCommand(sqlText);
sqlCom.Parameters.Add("@RateID", SqlDbType.Int);
sqlCom.Parameters.Add("@IPName", SqlDbType.Text);
sqlCom.Parameters.Add("@RateName", SqlDbType.Text);
sqlCom.Parameters.Add("@Rate", SqlDbType.Decimal);
sqlCom.Parameters.Add("@DateFrom", SqlDbType.Date);
sqlCom.Parameters.Add("@DateTo", SqlDbType.Date);
sqlCom.Parameters.Add("@Active", SqlDbType.Bit);

this._rateID = NextID();

sqlCom.Parameters["@RateID"].Value = this._rateID;

if (this._ipName == "All")
{
sqlCom.Parameters["@IPName"].Value = DBNull.Value;
}
else
{
sqlCom.Parameters["@IPName"].Value = this._ipName;
}

sqlCom.Parameters["@RateName"].Value = this._rateName;
sqlCom.Parameters["@Rate"].Value = this._rate;
sqlCom.Parameters["@DateFrom"].Value = this._dateFrom;
sqlCom.Parameters["@DateTo"].Value = this._dateTo;

this._active = true;
sqlCom.Parameters["@Active"].Value = this._active;

cSqlQuery cQ = new cSqlQuery(sqlText, "non query");

当我逐行执行时,我看到参数 @RateID 已成功添加到 sqlCommand 对象,方法 NextID 正确返回一个整数值,它被接受为 @RateID 参数的 Value,但是当我在 SqlCommand 上执行非查询时,我得到了上述错误。

非常感谢任何帮助。

最佳答案

您正在设置 sqlCom 对象 - 代码看起来不错。

但是然后:看起来你只是在这里执行 SQL 命令:

cSqlQuery cQ = new cSqlQuery(sqlText, "non query");

不使用您之前拥有的所有设置代码!为什么?

参数和所有参数都包含在 sqlCom 对象中 - 但您的 cSqlQuery 似乎并没有真正查看该对象 - 只是 SQL 语句本身...

如果你改用这一行会发生什么:

sqlCom.ExecuteNonQuery();

这是否无一异常(exception)地工作?

关于c# - 必须声明标量变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10602439/

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