Dapper 的 ExecuteScalar 用于执行 SQL 查询并返回结果集第一行第一列的值,适合获取 COUNT、SUM、MAX 等单值;需注意类型匹配、NULL 处理及使用泛型方法或可空类型避免异常。
Dapper 的 ExecuteScalar 用于执行 SQL 查询并返回结果集第一行第一列的值,适合获取 COUNT、SUM、MAX、单个字段等场景。 它不返回对象或列表,只取一个原始值(如 int、string、DateTime、Guid 等),用法简洁但需注意类型匹配和空值处理。
ExecuteScalar 默认返回 object,建议用泛型方法 ExecuteScalar 直接获取指定类型,避免手动转换:
int count = conn.ExecuteScalar("SELECT COUNT(*) FROM Users WHERE Status = @status", new { status = 1 });
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");
如果查询没返回任何行(比如 WHERE 条件不匹配),ExecuteScalar 返回 null(引用类型)或引发异常(值类型如 int)。安全写法:
int? id = conn.ExecuteScalar("SELECT Id FROM Users WHERE Email = @email", new { email = "x@y.z" });
ISNULL 或 COALESCE 提供默认值:conn.ExecuteScalar("SELECT COALESCE(MAX(SortOrder), 0) FROM Categories")
支持匿名对象、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.Exe
cuteScalarAsync("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
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。