Dapper的ExecuteScalar怎么用 Dapper返回单个值教程


Dapper 的 ExecuteScalar 用于执行 SQL 查询并返回结果集第一行第一列的值,适合获取 COUNT、SUM、MAX 等单值;需注意类型匹配、NULL 处理及使用泛型方法或可空类型避免异常。

Dapper 的 ExecuteScalar 用于执行 SQL 查询并返回结果集第一行第一列的值,适合获取 COUNT、SUM、MAX、单个字段等场景。 它不返回对象或列表,只取一个原始值(如 int、string、DateTime、Guid 等),用法简洁但需注意类型匹配和空值处理。

基本用法:查总数、取ID、拿最小值

ExecuteScalar 默认返回 object,建议用泛型方法 ExecuteScalar() 直接获取指定类型,避免手动转换:

  • 查记录数:int count = conn.ExecuteScalar("SELECT COUNT(*) FROM Users WHERE Status = @status", new { status = 1 });
  • 取最新插入ID(SQL Server):int newId = conn.ExecuteScalar("INSERT INTO Users (Name) VALUES (@name); SELECT CAST(SCOPE_IDENTITY() as int);", new { name = "张三" });
  • 查最大编号:string maxCode = conn.ExecuteScalar("SELECT MAX(Code) FROM Products");

注意空结果和 NULL 值处理

如果查询没返回任何行(比如 WHERE 条件不匹配),ExecuteScalar 返回 null(引用类型)或引发异常(值类型如 int)。安全写法:

  • 用可空类型接收:int? id = conn.ExecuteScalar("SELECT Id FROM Users WHERE Email = @email", new { email = "x@y.z" });
  • 数据库字段可能为 NULL?确保 SQL 中用 ISNULLCOALESCE 提供默认值:conn.ExecuteScalar("SELECT COALESCE(MAX(SortOrder), 0) FROM Categories")

配合参数和异步操作

支持匿名对象、DynamicParameters 和异步调用:

  • 用 DynamicParameters 更灵活传参:var p = new DynamicParameters(); p.Add("@minAge", 18, DbType.Int32); var avg = conn.ExecuteScalar("SELECT AVG(Score) FROM Students WHERE Age >= @minAge", p);
  • 异步版本:int count = await conn.ExecuteScalarAsync("SELECT COUNT(*) FROM Logs WHERE CreatedAt > @since", new { since = DateTime.Today });

基本上就这些。记住核心:它只拿“第一个值”,别指望它返回一行或多行;类型要对得上,NULL 要兜得住;有异步需求就用 ExecuteScalarAsync


# go  # app  # ai  # sql  # String  # Object  # NULL  # count  # select  # int  # 值类型  # 引用类型  # 空类型  # 泛型  # var  # 对象  # 异步  # 数据库  # 需注意  # 第一个  # 要对  # 就用  # 能为  # 它不  # 它只  # 默认值  # 或可  # 不匹配 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Windows10如何更改盘符名称_Win10重命名硬盘分区卷标  Win11局域网共享怎么设置 Win11文件夹网络共享教程【详解】  如何在Golang中实现并发消息队列消费者_Golang channel消息消费实践  php高频调试功能有哪些_php常用调试函数与工具汇总【解答】  php下载安装包怎么选_threadsafe与nts版本差异【解答】  Win11视频默认播放器怎么改_Win11关联第三方播放器【步骤】  Win11如何关闭游戏模式 Win11禁用Xbox Game Bar录制【优化】  作用域操作符会影响性能吗_php静态调用性能分析【教程】  Win11怎么关闭自动更新 Win11永久关闭系统更新的有效方法【技巧】  如何关闭Win10自动更新更新_Win10系统自动更新双重关闭技巧  Win11怎么把图标拖到任务栏_Win11固定应用快捷方式指南【方法】  Win11怎么检查TPM2.0模块_Windows11受信任平台模块开启状态查询  Win11怎么更改鼠标指针方案_Windows11自定义鼠标光标样式与大小  Python大文件处理策略_内存优化说明【指导】  Win11怎么设置快速访问主页_Windows11资源管理器文件夹选项  如何使用Golang实现负载均衡_分发请求到多个服务节点  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  Windows10如何更改桌面背景_Win10个性化幻灯片放映设置  怎么将XML数据可视化 D3.js加载XML  Win10怎样安装Excel数据分析工具_Win10安装分析工具包步骤【教程】  如何减少Golang内存碎片化_Golang内存分配与回收优化方法  Win11怎么开启智能存储_Windows11存储感知自动清理文件  LINUX怎么进行文本内容搜索_Linux grep命令正则表达式用法大全【教程】  如何诊断并终止卡死的 multiprocessing 子进程  MAC的“接续互通”功能无法使用怎么办_MAC检查蓝牙、Wi-Fi和相同Apple ID登录  海外搜索引擎推广效果怎么样,怎么分析效果!  php嵌入式多设备通信怎么实现_php同时管理多个串口设备【操作】  c++中的std::conjunction和std::disjunction是什么_c++模板元编程逻辑运算【C++17】  如何使用Golang实现基本类型比较_Golang比较操作符使用方法  短链接怎么用php递归还原_多层加密链接的处理法【详解】  php本地部署后数据库连接报错_1045accessdenied错误解决方法详解【汇总】  Win11怎么清理C盘系统错误报告_Win11清理系统错误报告技巧【教程】  Windows怎样拦截QQ浏览器广告_Windows拦截QQ浏览器广告方法【方法】  c++的STL算法库find怎么用 在容器中查找指定元素【实用教程】  LINUX如何开放防火墙端口_Linux firewalld与iptables开放端口命令【安全配置】  c++的static关键字有什么用 静态变量和静态函数的应用场景【教程】  Python多进程教程_multiprocessing模块实战  Go 语言标准库为何不提供泛型切片的 Contains 方法?  Win11怎么设置默认视频播放器_Windows 11关联媒体文件打开方式【步骤】  跨文件调用类方法怎么用_php作用域操作符与自动加载配合【介绍】  php485读数据时阻塞怎么办_php485非阻塞读取设置技巧【详解】  php485在macos下怎么配置_php485 macOS系统配置指南【解答】  Windows电脑如何截屏?(四种快捷方法)  Linux如何安装Golang环境_Linux下Go语言开发包配置【方法】  Windows电脑键盘突然失灵怎么办?(驱动与硬件排查)  新手学PHP架构总混淆概念咋办_重点梳理【教程】  如何在Golang中理解指针比较_Golang地址比较与相等判断  如何用::实现工具类方法调用_php静态工具类设计技巧【技巧】  如何在 Go 中正确测试带 Cookie 的 HTTP 请求  mac怎么看硬盘大小_MAC查看磁盘存储空间与文件占用【详解】 

 2025-12-15

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.