c# - 当sql语句包含@时如何将Dapper与mysql一起使用
问题描述
当我的 SQL 语句包含“@”时,我遇到了麻烦
似乎 Dapper 使用了 '@' 并抛出异常:必须拒绝“@rownum”。
但这不是 Dapper 参数。
我需要一些帮助。这是我的代码:
var sqlStr = @"SELECT
@rownum := @rownum +1 AS rownum,
e.* FROM (SELECT @rownum := 0) r,
(SELECT
f.nickname,
u.charm_value
FROM
user_info u
LEFT JOIN fans_info f ON u.openid=f.openid
ORDER BY
u.charm_value DESC,u.create_time DESC LIMIT 0,500) e ";
return conn.Query<Top500Response>(sqlStr).ToList();
解决方案
Dapper 将按原样传递它,因为它没有绑定到参数(请参阅如何在 Dapper 查询中转义 '@'?)。
我认为错误实际上来自 MySQL,您需要做的是设置:
Allow User Variables=True
在连接字符串中(参见allow-user-variables)
推荐阅读
- php - PHPMailer - 向存储在 mySQL 数据库中的地址发送多封电子邮件
- database - 用于在 GB 规模(流式和静态)数据集上查询和警报的技术堆栈
- python - 如何生成 N 个整数(比如 365),总和为某个值 K(比如 20)?
- python - python 浮点数列表,总和为 1.0,但 (sum(list) == 1.0) 给出 False。为什么?
- ios - 控制缩放行为 ARKit
- java - IntelliJ 说它无法解析 getValue()
- javascript - 如何按最后一个空值的多个日期时间属性排序?
- python-3.7 - 未检测到我的变量中的数字
- php - 如何在linux ubuntu上服务器离线时安装php5-ldap扩展
- c# - C#如果x = 1,如何选择按钮(X)然后它继续添加?