gpt4 book ai didi

c# - 是否可以使用MySql赋值运算符(:=) in a MySqlCommand?

转载 作者:行者123 更新时间:2023-11-29 16:00:11 29 4
gpt4 key购买 nike

我有一个查询在 MySql 工作台中运行良好,但产生语法错误 “您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以了解在附近使用的正确语法':= 0+1 AS Rank, z.* FROM(SELECT MemberId, Valu' at line 2" 当通过 MySqlCommand.ExecuteReader 运行时。有问题的语法是变量赋值在选择内部(即 SELECT @r := @r + 1)。我正在使用 .net 连接器 v.6.9.9,以防相关。此外,这是我的连接字符串: “服务器= mymysqlserveraddress;端口= 3306;数据库= dbName;用户id =用户名;密码=********;转换零日期时间= True;允许用户变量= true”

我尝试在连接字符串中设置Allow User Variables=true,如下所示:Is it possible to use a MySql User Defined Variable in a .NET MySqlCommand?

我寻找了与此匹配的其他问题,但最终只找到了一个相同的问题,但对于 java 中的休眠:How can I use MySQL assign operator(:=) in hibernate native query?

这是在 MySql Workbench 中运行的原始 SQL 查询:

SELECT Rank, Value 
FROM (SELECT @r := @r+1 AS Rank, z.*
FROM(SELECT MemberId, Value
FROM (SELECT Id, MemberId, Value, CreatedDate, EventId
FROM Scores
WHERE (LoadTime IS NULL AND EventId = 408)
ORDER BY Value DESC
) AS sub
)z,
(SELECT @r:=0)y
)x
WHERE x.Value<=228000;

408 和 228000 只是示例 - 我的 C# 代码构造字符串,然后通过以下方式将其发送到服务器:

StringBuilder statisticQueryString = new StringBuilder("");
// construct statisticQueryString
using (MySqlCommand cmd = new MySqlCommand(statisticQueryString.ToString(), conn))
{
cmd.Parameters.AddWithValue("r", 0);

using (MySqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Iterate through the collection of RankResult items...
}
}

因上述语法错误而失败的构造查询示例(我在发送之前将最终查询打印到日志中)是:

SELECT Rank, Value 
FROM (SELECT @r := @r+1 AS Rank, z.*
FROM(SELECT MemberId, Value
FROM (SELECT Id, MemberId, Value, CreatedDate, EventId
FROM Scores
WHERE (LoadTime IS NULL AND EventId = 408)
ORDER BY Value DESC
) AS sub
)z,
(SELECT @r:=0)y
)x
WHERE x.Value<=228000;

正如您所看到的,构造的查询与我在 MySql 工作台中运行且没有错误的查询相同。

最佳答案

@Uueerdo 的评论促使我尝试从 C# 代码中删除 cmd.Parameters.AddWithValue("r", 0); 行。这修复了错误并给了我预期的结果。

关于c# - 是否可以使用MySql赋值运算符(:=) in a MySqlCommand?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56245789/

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