gpt4 book ai didi

sql-server - Dapper Execute 返回-1 值?

转载 作者:行者123 更新时间:2023-12-05 03:04:30 28 4
gpt4 key购买 nike

以下 SQL 查询在给定值可用时返回 1,在不可用时返回 0,它在 SQL Server Management Studio 中运行良好,

select 
case
when exists (select * from [dbo].[user]
where userName = 'admin'
and password = 'admin')
then cast(1 as bit)
else cast(0 as bit)
end

使用 dapper ORM 的相同查询如下:

public int login(string userName, string password)
{
string sql = "select case when exists(select * from user where userName = @usernamepara and password = @passwordpara) then cast(1 as bit) else cast(0 as bit )end";

using(IDbConnection conn = dbConnection)
{
conn.Open();

var res = conn.Execute(sql,
param: new { usernamepara = userName,
passwordpara = password });
conn.Close();
return res;
}
}

但是当调用这个方法时,它会为匹配和不匹配的记录返回-1。这里有什么问题吗?

最佳答案

可能是因为你使用了错误的执行:

https://dapper-tutorial.net/execute

说 EXECUTE 将返回受影响的行数,并且该文档明确表示 execute 不用于返回行的查询

我想说你应该在 dapper 中使用一些在引擎盖下使用 ExecuteScalar 的东西 - 参见 is there an ExecuteScalar in Dapper以及我对问题的评论的链接,关于如何将计数查询(也在评论中建议)转换为一本书的结果,其中 0 为假,其他任何为真

关于sql-server - Dapper Execute 返回-1 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52867159/

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