c# - Dapper For MySQL Query<T>(string sql) sql 有一个自定义变量(@rowNum) 包含一个特殊字符 @

标签 c# mysql dapper

这是我的问题。我想获得一个用户页面列表,但我不想使用限制。然后我可以像这样使用 sql:

SELECT * FROM (SELECT @rowNum:=@rowNum+1 AS rowNum,User FROM (SELECT
@rowNum:=0) r,User where User.Name=@Name ORDER BY User.Name) AS a
WHERE rowNum>=1  AND rowNum<=10

.net 代码如下:

connection.Query<T>(sql, new{Name="name"}, transaction, true,commandTimeout);

当我运行程序时,它抛出异常:

message: "Object reference not set to an instance of an object.",
data: { },
innerException: null,
stackTrace: " at MySql.Data.MySqlClient.MySqlConnection.get_ServerThread() at MySql.Data.MySqlClient.MySqlConnection.Abort() at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) at Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) at Dapper.SqlMapper.<QueryImpl>d__124`1.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) at Infrastructure.Dapper.MysqlMapperExtension.QueryPaged[T](IDbConnection connection, Object condition, String table, String orderBy, Int32 pageIndex, Int32 pageSize, String columns, Boolean isOr, IDbTransaction transaction, Nullable`1 commandTimeout) in E:\Lofter\Code Source\NetCore\MermaidLoft.Alchemy\MermaidLoft.Alchemy\src\Extensions\Infrastructure.Dapper\MysqlMapperExtension.cs:line 312 at MermaidLoft.Alchemy.BaseDomain.UserDomain.UserQueryService.FindUsersForPage(String userName, Int32 pageIndex, Int32 pageSize) in E:\Lofter\Code Source\NetCore\MermaidLoft.Alchemy\MermaidLoft.Alchemy\src\Domains\MermaidLoft.Alchemy.BaseDomain\UserDomain\UserQueryService.cs:line 30 at MermaidLoft.Alchemy.QuickWeb.Controllers.HomeController.Mysql() in E:\Lofter\Code Source\NetCore\MermaidLoft.Alchemy\MermaidLoft.Alchemy\src\MermaidLoft.Alchemy.QuickWeb\Controllers\HomeController.cs:line 40",
helpLink: null,
source: "SapientGuardian.MySql.Data",
hResult: -2147467261

有什么办法可以解决这个问题吗?希望有人能帮助我,谢谢!

最佳答案

如果你的意思是你想检查用户名是否有特殊字符或类似的东西>>那么简单你可以为字符串中的每个字符创建循环并将char转换为int现在你将char转换为ascii并通过if检查它

string x="aaaa";
foreach(char a in x)
{
     int s=(int)a;
    //(s>=65&&s<=90) capital
    //(s>=97&&s<=122) small 
    if((s>=65&&s<=90) || (s>=97&&s<=122))
               //do your code

}

关于c# - Dapper For MySQL Query<T>(string sql) sql 有一个自定义变量(@rowNum) 包含一个特殊字符 @,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39461739/

相关文章:

php - 如何优化 PHP 代码以上传 SQL 转储

sql - Dapper.NET 列别名未正确映射

c# - 在 C# 中为 Dapper 创建动态类型

c# - 在参数 C# 中传递接口(interface)

c# - C++ dll 抛出断言失败

mysql - 获取用户的 SQL 查询

php - 计算成员(member)平均年龄 (PHP)

architecture - "dapper-dot-net"中的交易

c# - 在迷宫中的消息框上插入声音和图像

c# - 如何检查反射类型是否为数组